设为首页 加入收藏

TOP

[超详细]SpringBoot整合WebSocket(二)
2023-09-09 10:26:01 】 浏览:79
Tags:SpringBoot 整合 WebSocket
.Session; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArraySet; @Slf4j public class WebSocketManager { private final static CopyOnWriteArraySet<WebSocketServer> webSocketServerSet = new CopyOnWriteArraySet<>(); private final static ConcurrentHashMap<String, WebSocketServer> webSocketServerMap = new ConcurrentHashMap<>(); public static void addWebSocketServer(WebSocketServer webSocketServer){ if (webSocketServer != null){ webSocketServerSet.add(webSocketServer); webSocketServerMap.put(webSocketServer.getSessionId(), webSocketServer); } } public static void removeWebSocketServer(WebSocketServer webSocketServer){ webSocketServerSet.remove(webSocketServer); webSocketServerMap.remove(webSocketServer.getSessionId()); } /** * 通过SessionId发送消息给特定用户 * @param * @param msg */ public static void sentToUser(String sessionId, String msg){ Session session = webSocketServerMap.get(sessionId).getSession(); sentToUser(session, msg); } /** * 通过Session发送消息给特定用户 * @param session * @param msg */ public static void sentToUser(Session session, String msg){ if (session == null){ log.error("不存在该Session,无法发送消息"); return; } session.getAsyncRemote().sendText(msg); } /** * 发送消息给所有用户 * @param msg */ public static void sentToAllUser(String msg){ for (WebSocketServer webSocketServer : webSocketServerSet) { sentToUser(webSocketServer.getSession(), msg); } log.info("向所有用户发送WebSocket消息完毕,消息:{}", msg); } }

3. 测试

使用Postman等工具进行WebSocket连接,连接路径为WebSocket(与前文的@ServerEndpoint内容一致)。建立连接后会收到"WebSocket is connected!"

4. 后续完善

如果你的项目中有登录功能,那么应该在你的登录时将用户的Session记录下来。你可以将Session记录在本地缓存、Redis和Grava缓存等能够建立关联关系的地方。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇里氏替换原则 下一篇Spring Boot 别再用 Date 作为入..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目