关于弹簧引导WebSocket整合以及nginx配置详解

  

  

本文主要给大家介绍了关于弹簧引导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配置详解