WebSocketConfig.java
| |
| |
| |
| |
| @Configuration |
| public class WebSocketConfig { |
| |
| |
| |
| |
| |
| @Bean |
| public ServerEndpointExporter serverEndpointExporter(){ |
| return new ServerEndpointExporter(); |
| } |
| } |
WebSocketServer.java
| |
| |
| |
| |
| |
| @Slf4j |
| @Component |
| @ServerEndpoint(value = "/imserver/{username}") |
| public class WebSocketServer { |
| |
| |
| |
| |
| public static final Map<String, Session> sessionMap = new ConcurrentHashMap<>(); |
| |
| |
| |
| |
| @OnOpen |
| public void onOpen(Session session, @PathParam("username") String username) { |
| sessionMap.put(username, session); |
| log.info("有新用户加入,username={},当前在线人数:{}", username, sessionMap.size()); |
| sendAllMessage("有新连接加入"); |
| } |
| |
| |
| |
| |
| @OnClose |
| public void onClose(Session session, @PathParam("username") String username) { |
| sessionMap.remove(username); |
| log.info("有一个连接关闭,移除username={}的用户session,当前在线人数:{}", username, sessionMap.size()); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| @OnMessage |
| public void onMessage(String message, Session session, @PathParam("username") String username) { |
| log.info("服务端收到用户username={}的消息:{}", username, message); |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| if (Objects.nonNull(session)) { |
| String newMessage = "服务器已成功接收到消息:[" + message + "],并坏笑一声!"; |
| this.sendMessage(session, newMessage); |
| } |
| } |
| |
| @OnError |
| public void onError(Session session, Throwable error) { |
| log.error("Websocket发生错误"); |
| error.printStackTrace(); |
| } |
| |
| |
| |
| |
| public void sendAllMessage(String message) { |
| try { |
| for (Session session : sessionMap.values()) { |
| log.info("服务端给客户端[{}]发送消息{}", session.getId(), message); |
| session.getBasicRemote().sendText(message); |
| } |
| } catch (Exception e) { |
| log.error("服务端发送消息给客户端失败", e); |
| } |
| } |
| |
| |
| |
| |
| public void sendMessage(Session toSession, String message) { |
| try { |
| toSession.getBasicRemote().sendText(message); |
| } catch (Exception e) { |
| log.info("服务端发送消息各客户端失败", e); |
| } |
| } |
| |
| } |
WebSocketClinet.java
待补充。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理