Ver código fonte

websocket 集成

jingyuanchao 1 ano atrás
pai
commit
1ecf764b76

+ 5 - 0
soc-modules/soc-modules-mediator/pom.xml

@@ -79,6 +79,11 @@
             <version>${soc.version}</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+
         <!--lombok-->
         <dependency>
             <groupId>org.projectlombok</groupId>

+ 16 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/WebSocketConfig.java

@@ -0,0 +1,16 @@
+package com.xunmei.mediator.websocket;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.config.annotation.EnableWebSocket;
+import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
+import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
+
+@Configuration
+@EnableWebSocket
+public class WebSocketConfig implements WebSocketConfigurer {
+
+    @Override
+    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
+        registry.addHandler(new WebSocketHandler(), "/mediator").setAllowedOrigins("*");
+    }
+}

+ 39 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/WebSocketHandler.java

@@ -0,0 +1,39 @@
+package com.xunmei.mediator.websocket;
+
+import org.springframework.stereotype.Component;
+import org.springframework.web.socket.CloseStatus;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
+import org.springframework.web.socket.handler.TextWebSocketHandler;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Component
+public class WebSocketHandler extends TextWebSocketHandler {
+
+    private final Map<String,WebSocketSession> sessions = new ConcurrentHashMap<String,WebSocketSession>();
+
+    @Override
+    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
+        sessions.put("123",session);
+        System.out.println("New connection established: " + session.getId());
+    }
+
+    @Override
+    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
+        String payload = message.getPayload();
+        System.out.println("Received message: " + payload);
+        // 处理消息并入数据库
+    }
+
+    @Override
+    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
+        sessions.remove(session);
+        System.out.println("Connection closed: " + session.getId());
+    }
+
+    public void sendMessageToAll(String message) {
+
+    }
+}

+ 19 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/WebSocketService.java

@@ -0,0 +1,19 @@
+package com.xunmei.mediator.websocket;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class WebSocketService {
+
+    private final WebSocketHandler webSocketHandler;
+
+    @Autowired
+    public WebSocketService(WebSocketHandler webSocketHandler) {
+        this.webSocketHandler = webSocketHandler;
+    }
+
+    public void sendMessageToAll(String message) {
+        webSocketHandler.sendMessageToAll(message);
+    }
+}