浏览代码

add 新增ws可订阅该用户所有聊天室信息

18339543638 3 年之前
父节点
当前提交
0d027c4707

+ 12 - 0
nb-common/ws-common/src/main/java/com/nb/common/websocket/WebSocketConstant.java

@@ -29,6 +29,8 @@ public class WebSocketConstant {
     public static final String UNSUB_ALL ="all";
 
     public static final String IM ="im";
+
+    public static final String IM_ALL ="im-all";
     /**
      * 病人监控订阅
      */
@@ -38,6 +40,7 @@ public class WebSocketConstant {
      * his脚本连接通道
      */
     public static final String HIS_CONNECTION ="his-connection";
+
     /**
      * 主题格式为 device-info-detail:default:45789215623:医院id
      *             alarm-count:default:电量不足:医院id
@@ -53,6 +56,15 @@ public class WebSocketConstant {
     }
 
 
+    /**
+     * 获取 设备状态变化主题
+     * @param userId 设备所属医院
+     * @return
+     */
+    public static TopicWrapper getAllImByUserId(String userId){
+        return getTopic(IM_ALL,null,userId,null);
+    }
+
     /**
      * 获取 设备状态变化主题
      * @param tenantId 设备所属医院

+ 5 - 0
nb-im/src/main/java/com/nb/im/utils/ImUtils.java

@@ -130,6 +130,11 @@ public class ImUtils {
         if(!pubMsgInfo.isTmp()){
             String senderId = pubMsgInfo.getSenderId();
             roomOperator.addUnreadMsg(senderId.equals(roomOperator.getAssitId())?roomOperator.getDoctorId():roomOperator.getAssitId(),Arrays.asList(pubMsgInfo.getKey()));
+            //消息发送给个人
+            String receiveId=senderId.equals(roomOperator.getAssitId())?roomOperator.getDoctorId():roomOperator.getAssitId();
+
+            pubTopicMap.computeIfAbsent( WebSocketConstant.getAllImByUserId(receiveId).getTopic(), k->redissonClient.getTopic(k))
+                    .publishAsync( TopicMessage.of(roomMsg,param,pubMsgInfo.getKey()));
         }
     }
 }

+ 32 - 0
nb-im/src/main/java/com/nb/im/ws/ImAllSubscribe.java

@@ -0,0 +1,32 @@
+package com.nb.im.ws;
+
+import com.nb.common.websocket.WebSocketConstant;
+import com.nb.common.websocket.handler.Subscribe;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+import org.tio.core.ChannelContext;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName ImSubscribe.java
+ * @Description 即时通信主题
+ * @createTime 2022年08月16日 14:01:00
+ */
+@Configuration
+public class ImAllSubscribe extends Subscribe {
+    @Override
+    public String getId() {
+        return WebSocketConstant.IM_ALL;
+    }
+
+    @Override
+    public void close(ChannelContext channelContext) {
+
+    }
+
+    @Override
+    public boolean needParam() {
+        return true;
+    }
+}