2026/1/13 11:10:26
网站建设
项目流程
p2p网贷网站建设哪家好,qq安全网页版在线登录,东坑网站仿做,广告设计师工作内容文章目录 前言一、添加依赖#xff08;Maven#xff09;二、配置 WebSocket1. 创建 WebSocket 配置类2. 实现 WebSocket 处理器 三、前端测试#xff08;HTML JS#xff09;四、启动类#xff08;标准 Spring Boot 启动类#xff09;五、可选#xff1a;使用 STOMP ove…文章目录前言一、添加依赖Maven二、配置 WebSocket1. 创建 WebSocket 配置类2. 实现 WebSocket 处理器三、前端测试HTML JS四、启动类标准 Spring Boot 启动类五、可选使用 STOMP over WebSocket更高级六、注意事项前言SpringBoot集成WebSocket在 Spring Boot 中集成 WebSocket 可以实现服务器与客户端之间的双向通信常用于实时消息推送、聊天室、在线通知等场景。一、添加依赖MavendependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId/dependency二、配置 WebSocket1. 创建 WebSocket 配置类importorg.springframework.context.annotation.Configuration;importorg.springframework.web.socket.config.annotation.EnableWebSocket;importorg.springframework.web.socket.config.annotation.WebSocketConfigurer;importorg.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;ConfigurationEnableWebSocketpublicclassWebSocketConfigimplementsWebSocketConfigurer{OverridepublicvoidregisterWebSocketHandlers(WebSocketHandlerRegistryregistry){// 注册处理器允许跨域访问registry.addHandler(myWebSocketHandler(),/websocket).setAllowedOrigins(*);// 生产环境应限制具体域名}publicMyWebSocketHandlermyWebSocketHandler(){returnnewMyWebSocketHandler();}}2. 实现 WebSocket 处理器importorg.springframework.web.socket.CloseStatus;importorg.springframework.web.socket.TextMessage;importorg.springframework.web/socket.WebSocketSession;importorg.springframework.web.socket.handler.TextWebSocketHandler;importjava.util.concurrent.ConcurrentHashMap;publicclassMyWebSocketHandlerextendsTextWebSocketHandler{// 存储所有连接的会话privatestaticfinalConcurrentHashMapString,WebSocketSessionsessionsnewConcurrentHashMap();OverridepublicvoidafterConnectionEstablished(WebSocketSessionsession)throwsException{sessions.put(session.getId(),session);System.out.println(新连接: session.getId());}OverrideprotectedvoidhandleTextMessage(WebSocketSessionsession,TextMessagemessage)throwsException{Stringpayloadmessage.getPayload();System.out.println(收到消息: payload);// 广播给所有连接的客户端for(WebSocketSessions:sessions.values()){if(s.isOpen()){s.sendMessage(newTextMessage(Echo: payload));}}}OverridepublicvoidafterConnectionClosed(WebSocketSessionsession,CloseStatusstatus)throwsException{sessions.remove(session.getId());System.out.println(连接关闭: session.getId());}OverridepublicvoidhandleTransportError(WebSocketSessionsession,Throwableexception)throwsException{sessions.remove(session.getId());session.close(CloseStatus.SERVER_ERROR);System.out.println(连接异常: session.getId());}}三、前端测试HTML JS!DOCTYPEhtmlhtmlheadtitleWebSocket 测试/title/headbodyinputtypetextidmessageplaceholder输入消息buttononclicksendMessage()发送/buttondividoutput/divscriptconstwsnewWebSocket(ws://localhost:8080/websocket);ws.onopenfunction(event){console.log(连接已建立);};ws.onmessagefunction(event){document.getElementById(output).innerHTMLpevent.data/p;};ws.onclosefunction(event){console.log(连接已关闭);};functionsendMessage(){constmsgdocument.getElementById(message).value;ws.send(msg);}/script/body/html四、启动类标准 Spring Boot 启动类importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplicationpublicclassWebsocketApplication{publicstaticvoidmain(String[]args){SpringApplication.run(WebsocketApplication.class,args);}}五、可选使用 STOMP over WebSocket更高级如果你需要更复杂的协议如订阅/发布、路径匹配、安全认证等可以考虑使用STOMP协议Spring Boot 对其有良好支持。六、注意事项setAllowedOrigins(*)在生产环境中应替换为具体的可信域名。WebSocket 连接是长连接注意资源释放和异常处理。若部署在 Nginx 或云服务后需确保代理支持 WebSocket设置 Upgrade 和 Connection 头。如需基于注解ServerEndpoint的方式使用原生 Java EE WebSocket API也可以配合spring-boot-starter-websocket使用但 Spring 推荐使用WebSocketHandler或 STOMP 方式。本文的引用仅限自我学习如有侵权请联系作者删除。参考知识