本文主要给大家介绍了关于弹簧引导WebSocket整合及nginx配置的相关内容,分享出来供大家参考学习、下面话不多说了,来一起看看详细的介绍吧。
创建一个maven项目,加入如下依赖
& lt; dependencyManagement> & lt; dependencies> & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-dependencies & lt; version> 1.4.0.RELEASE & lt; scope> import & lt; type> pom & lt;/dependency> & lt;/dependencies> & lt;/dependencyManagement> & lt; dependencies> & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-web & lt;/dependency> & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-websocket & lt;/dependency> & lt;/dependencies>>之前代码如下:
包com.wh.web; 进口org.springframework.web.socket.TextMessage; 进口org.springframework.web.socket.WebSocketSession; 进口org.springframework.web.socket.handler.TextWebSocketHandler; 公开课CountWebSocketHandler延伸TextWebSocketHandler { 私有静态长计数=0; 保护无效handleTextMessage (WebSocketSession会话,TextMessage消息){抛出异常 会话。sendMessage(新TextMessage(“你是第" +(+ +数)+“位访客")); } }包com.wh.web; 进口org.springframework.context.annotation.Configuration; 进口org.springframework.web.socket.config.annotation.WebSocketConfigurer; 进口org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; @ configuration 公共类WebsocketConfiguration实现WebSocketConfigurer { 公共空间registerWebSocketHandlers (WebSocketHandlerRegistry注册表){ 注册表。addHandler(新CountWebSocketHandler (),“/web/计数”); } }包com.wh.web; 进口org.springframework.boot.SpringApplication; 进口org.springframework.boot.autoconfigure.SpringBootApplication; 进口org.springframework.web.socket.config.annotation.EnableWebSocket; @EnableWebSocket @SpringBootApplication 公开课ServerApp { 公共静态void main (String [] args) { SpringApplication.run (ServerApp.class, args); } }应用程序。属性内容如下:
server.port=9080 spring.resources。static-locations=类路径:/webapp/html/src/main/资源/webapp/html/index.html 内容如下:
& lt; !DOCTYPE html> & lt; html> & lt; head> & lt;元charset=" utf - 8 "/比; & lt; title> web socket & lt;/head> & lt; body> & lt; h2> web socket & lt;脚本type=" text/javascript祝辞 var url=' ws://' + window.location.hostname +“: 9080/web/计数”; var ws=new WebSocket (url); ws。onopen=函数(事件) { ws.send('你好'); }; ws。onmessage=函数(事件){ 警报(event.data); }; ws。onerror=函数(事件){ 警报(事件); } & lt;/script> & lt;/body> & lt;/html>>之前最后,启动主方法,访问http://127.0.0.1:9080 index . html即可看到输出
nginx通过在客户端和后端服务器之间建立起一条隧道来支持WebSocket。
为了使nginx可以将来自客户端的升级请求发送给后端服务器,升级和连接的头信息必须被显式的设置。如下所示:
位置/web/计数{ proxy_pass http://tomcat-server; proxy_redirect; proxy_http_version 1.1; proxy_set_header升级http_upgrade美元; proxy_set_header连接“升级”; 主持人:美元proxy_set_header主机server_port; proxy_set_header X-Real-IP remote_addr美元; proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for美元; }一旦我们完成以上设置,nginx就可以处理WebSocket连接了。
必须要有,主持人:美元<代码> proxy_set_header主机server_port; 代码>,,这个配置
否,则会报:
关于弹簧引导WebSocket整合以及nginx配置详解