Kaynağa Gözat

update 优化 登录消息 支持集群发送

疯狂的狮子Li 2 yıl önce
ebeveyn
işleme
af2e8935b4

+ 1 - 1
ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteMessageService.java

@@ -13,7 +13,7 @@ public interface RemoteMessageService {
      * @param sessionKey session主键 一般为用户id
      * @param message    消息文本
      */
-    void sendMessage(Long sessionKey, String message);
+    void publishMessage(Long sessionKey, String message);
 
     void publishAll(String message);
 }

+ 2 - 2
ruoyi-api/ruoyi-api-resource/src/main/java/org/dromara/resource/api/RemoteMessageServiceStub.java

@@ -20,9 +20,9 @@ public class RemoteMessageServiceStub implements RemoteMessageService {
      * @param sessionKey session主键 一般为用户id
      * @param message    消息文本
      */
-    public void sendMessage(Long sessionKey, String message) {
+    public void publishMessage(Long sessionKey, String message) {
         try {
-            remoteMessageService.sendMessage(sessionKey, message);
+            remoteMessageService.publishMessage(sessionKey, message);
         } catch (Exception e) {
             log.warn("websocket 功能未开启或服务未找到");
         }

+ 1 - 1
ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java

@@ -97,7 +97,7 @@ public class TokenController {
 
         Long userId = LoginHelper.getUserId();
         scheduledExecutorService.schedule(() -> {
-            remoteMessageService.sendMessage(userId, "欢迎登录RuoYi-Cloud-Plus微服务管理系统");
+            remoteMessageService.publishMessage(userId, "欢迎登录RuoYi-Cloud-Plus微服务管理系统");
         }, 3, TimeUnit.SECONDS);
         return R.ok(loginVo);
     }

+ 8 - 2
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteMessageServiceImpl.java

@@ -3,10 +3,13 @@ package org.dromara.resource.dubbo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.common.websocket.dto.WebSocketMessageDto;
 import org.dromara.common.websocket.utils.WebSocketUtils;
 import org.dromara.resource.api.RemoteMessageService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 短信服务
  *
@@ -25,8 +28,11 @@ public class RemoteMessageServiceImpl implements RemoteMessageService {
      * @param message    消息文本
      */
     @Override
-    public void sendMessage(Long sessionKey, String message) {
-        WebSocketUtils.sendMessage(sessionKey, message);
+    public void publishMessage(Long sessionKey, String message) {
+        WebSocketMessageDto dto = new WebSocketMessageDto();
+        dto.setMessage(message);
+        dto.setSessionKeys(List.of(sessionKey));
+        WebSocketUtils.publishMessage(dto);
     }
 
     /**