Ver Fonte

Merge branch 'websockt-whiteboard' into master_saas

Eric há 2 anos atrás
pai
commit
85c15e2da3

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/WsConnectServiceImpl.java

@@ -80,6 +80,10 @@ public class WsConnectServiceImpl implements WsConnectService {
         recordInfo.setId(record.getId());
         recordInfo.setDisconnectTime(DateTime.now().toDate());
         recordInfo.setOnlineTime(recordInfo.getDisconnectTime().getTime() - record.getConnectTime().getTime());
+        // 如果断开时间小于0,则设置为0
+        if (recordInfo.getOnlineTime() < 0) {
+            recordInfo.setOnlineTime(0L);
+        }
 
         return wsConnectRecordInfoMapper.updateByPrimaryKeySelective(recordInfo);
     }

+ 9 - 7
mec-websocket/src/main/java/com/ym/mec/web/handler/WhiteboardHandler.java

@@ -8,7 +8,9 @@ import com.corundumstudio.socketio.annotation.OnDisconnect;
 import com.corundumstudio.socketio.annotation.OnEvent;
 import com.corundumstudio.socketio.protocol.Packet;
 import com.corundumstudio.socketio.protocol.PacketType;
+import com.corundumstudio.socketio.store.pubsub.DispatchMessage;
 import com.corundumstudio.socketio.store.pubsub.PubSubStore;
+import com.corundumstudio.socketio.store.pubsub.PubSubType;
 import com.google.common.collect.Lists;
 import com.ym.mec.biz.service.WsConnectService;
 import com.ym.mec.web.support.anno.NamespaceReference;
@@ -78,7 +80,7 @@ public class WhiteboardHandler {
      * @param eventName 事件名称
      * @param data      发送数据
      */
-    public void dispatchMessage(SocketIOClient client, String roomId, String eventName, List<Object> data) {
+    public void dispatchMessage(SocketIOClient client, String roomId, String eventName, PacketType subType, List<Object> data) {
 
         // 分发消息(当前服务不会向client推送自己分发出去的消息)
         try {
@@ -88,12 +90,12 @@ public class WhiteboardHandler {
 
             // 发送数据包
             Packet packet = new Packet(PacketType.MESSAGE);
-            packet.setSubType(PacketType.EVENT);
+            packet.setSubType(subType);
             packet.setName(eventName);
             packet.setNsp(namespace);
             packet.setData(data);
 
-            //pubSubStore.publish(PubSubType.DISPATCH, new DispatchMessage(roomId, packet, namespace));
+            pubSubStore.publish(PubSubType.DISPATCH, new DispatchMessage(roomId, packet, namespace));
         } catch (Exception e) {
             log.error("PubSubType.DISPATCH roomId={}, sid={}", roomId, client.getSessionId(), e);
         }
@@ -166,7 +168,7 @@ public class WhiteboardHandler {
             }
 
             // 消息分发
-            dispatchMessage(client, roomId, EVENT_ROOM_USER_CHANGE, Collections.singletonList(collect));
+            dispatchMessage(client, roomId, EVENT_ROOM_USER_CHANGE, PacketType.EVENT, Collections.singletonList(collect));
         }
 
         if (StringUtils.isNoneBlank(roomId, userId, clientType)) {
@@ -231,7 +233,7 @@ public class WhiteboardHandler {
         }
 
         // 消息分发
-        dispatchMessage(client, roomId, EVENT_JOIN_ROOM, Collections.singletonList(roomId));
+        dispatchMessage(client, roomId, EVENT_JOIN_ROOM, PacketType.EVENT, Collections.singletonList(roomId));
     }
 
     /**
@@ -250,7 +252,7 @@ public class WhiteboardHandler {
         roomOperations.sendEvent(EVENT_CLIENT_BROADCAST, encryptedData, iv);
 
         // 消息分发
-        dispatchMessage(client, roomId, EVENT_CLIENT_BROADCAST, Arrays.asList(encryptedData, iv));
+        dispatchMessage(client, roomId, EVENT_CLIENT_BROADCAST, PacketType.BINARY_EVENT, Arrays.asList(encryptedData, iv));
     }
 
     /**
@@ -269,6 +271,6 @@ public class WhiteboardHandler {
         roomOperations.sendEvent(EVENT_CLIENT_BROADCAST, encryptedData, iv);
 
         // 消息分发
-        dispatchMessage(client, roomId, EVENT_CLIENT_BROADCAST, Arrays.asList(encryptedData, iv));
+        dispatchMessage(client, roomId, EVENT_CLIENT_BROADCAST, PacketType.BINARY_EVENT, Arrays.asList(encryptedData, iv));
     }
 }

+ 7 - 2
mec-websocket/src/main/java/com/ym/mec/web/support/socket/ServerRunner.java

@@ -1,13 +1,18 @@
 package com.ym.mec.web.support.socket;
 
 import com.corundumstudio.socketio.SocketIOServer;
+import com.corundumstudio.socketio.namespace.Namespace;
 import com.corundumstudio.socketio.namespace.NamespacesHub;
+import com.corundumstudio.socketio.store.pubsub.DispatchMessage;
 import com.corundumstudio.socketio.store.pubsub.PubSubStore;
+import com.corundumstudio.socketio.store.pubsub.PubSubType;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Component;
 
+import java.util.Objects;
+
 @Slf4j
 @Component
 public class ServerRunner implements CommandLineRunner {
@@ -30,7 +35,7 @@ public class ServerRunner implements CommandLineRunner {
         server.start();
 
         // 订阅消息
-        /*pubSubStore.subscribe(PubSubType.DISPATCH, message -> {
+        pubSubStore.subscribe(PubSubType.DISPATCH, message -> {
 
             // 分布式服务空间请求分发
             Namespace namespace = namespacesHub.get(message.getNamespace());
@@ -39,7 +44,7 @@ public class ServerRunner implements CommandLineRunner {
                 namespace.dispatch(message.getRoom(), message.getPacket());
             }
 
-        }, DispatchMessage.class);*/
+        }, DispatchMessage.class);
 
         log.info("--------SocketIO------- SERVER.START PORT={}", server.getConfiguration().getPort());
     }