diff --git a/lis-interfaceCommon/pom.xml b/lis-interfaceCommon/pom.xml index c29ca96..dc457d0 100644 --- a/lis-interfaceCommon/pom.xml +++ b/lis-interfaceCommon/pom.xml @@ -70,6 +70,12 @@ pinyin4j + + org.springframework.boot + spring-boot-starter-websocket + + + diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/config/WebSocketConfiguration.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/config/WebSocketConfiguration.java new file mode 100644 index 0000000..bb20781 --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/config/WebSocketConfiguration.java @@ -0,0 +1,19 @@ +package com.czlis.interfaceCommon.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.server.standard.ServerEndpointExporter; + + +/** + * WebSocket配置类,用于注册WebSocket的Bean + */ +@Configuration +public class WebSocketConfiguration { + + @Bean + public ServerEndpointExporter serverEndpointExporter() { + return new ServerEndpointExporter(); + } + +} diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketServer.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketServer.java new file mode 100644 index 0000000..1c75e83 --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketServer.java @@ -0,0 +1,73 @@ +package com.czlis.interfaceCommon.websocket; + + +import org.springframework.stereotype.Component; + +import javax.websocket.OnClose; +import javax.websocket.OnMessage; +import javax.websocket.OnOpen; +import javax.websocket.Session; +import javax.websocket.server.PathParam; +import javax.websocket.server.ServerEndpoint; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +/** + * WebSocket服务 + */ +@Component +@ServerEndpoint("/ws/{sid}") +public class WebSocketServer { + + //存放会话对象 + private static Map sessionMap = new HashMap(); + + /** + * 连接建立成功调用的方法 + */ + @OnOpen + public void onOpen(Session session, @PathParam("sid") String sid) { + System.out.println("客户端:" + sid + "建立连接"); + sessionMap.put(sid, session); + } + + /** + * 收到客户端消息后调用的方法 + * + * @param message 客户端发送过来的消息 + */ + @OnMessage + public void onMessage(String message, @PathParam("sid") String sid) { + System.out.println("收到来自客户端:" + sid + "的信息:" + message); + } + + /** + * 连接关闭调用的方法 + * + * @param sid + */ + @OnClose + public void onClose(@PathParam("sid") String sid) { + System.out.println("连接断开:" + sid); + sessionMap.remove(sid); + } + + /** + * 群发 + * + * @param message + */ + public void sendToAllClient(String message) { + Collection sessions = sessionMap.values(); + for (Session session : sessions) { + try { + //服务器向客户端发送消息 + session.getBasicRemote().sendText(message); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + +} diff --git a/pom.xml b/pom.xml index 1b6d50a..dc57d48 100644 --- a/pom.xml +++ b/pom.xml @@ -123,6 +123,12 @@ test + + org.springframework.boot + spring-boot-starter-websocket + ${spring-boot.version} + + com.alibaba