全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

关于Spring Boot WebSocket整合以及nginx配置详解

前言

本文主要给大家介绍了关于Spring Boot WebSocket整合及nginx配置的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

一:Spring Boot WebSocket整合

创建一个maven项目,加入如下依赖

<dependencyManagement> 
 <dependencies> 
  <dependency> 
   <groupId>org.springframework.boot</groupId> 
   <artifactId>spring-boot-dependencies</artifactId> 
   <version>1.4.0.RELEASE</version> 
   <scope>import</scope> 
   <type>pom</type> 
  </dependency> 
 </dependencies> 
</dependencyManagement> 
 
<dependencies> 
 <dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-web</artifactId> 
 </dependency> 
 <dependency> 
  <groupId>org.springframework.boot</groupId> 
  <artifactId>spring-boot-starter-websocket</artifactId> 
 </dependency> 
</dependencies> 

代码如下:

package com.wh.web; 
 
import org.springframework.web.socket.TextMessage; 
import org.springframework.web.socket.WebSocketSession; 
import org.springframework.web.socket.handler.TextWebSocketHandler; 
 
public class CountWebSocketHandler extends TextWebSocketHandler { 
 
 private static long count = 0; 
 protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { 
  session.sendMessage(new TextMessage("你是第" + (++count) + "位访客")); 
 } 
} 
package com.wh.web; 
 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.socket.config.annotation.WebSocketConfigurer; 
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; 
 
@Configuration 
public class WebsocketConfiguration implements WebSocketConfigurer { 
 public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { 
  registry.addHandler(new CountWebSocketHandler(), "/web/count"); 
 } 
} 
package com.wh.web; 
 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.web.socket.config.annotation.EnableWebSocket; 
 
@EnableWebSocket 
@SpringBootApplication 
public class ServerApp { 
 public static void main(String[] args) { 
  SpringApplication.run(ServerApp.class, args); 
 } 
} 

application.properties 内容如下:

server.port=9080 
spring.resources.static-locations=classpath:/webapp/html/ 

src/main/resources/webapp/html/index.html  内容如下:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8" /> 
<title>web socket</title> 
</head> 
<body> 
<h1>web socket</h1> 
<script type="text/javascript"> 
 var url = 'ws://'+window.location.hostname+':9080/web/count'; 
 var ws = new WebSocket(url); 
 ws.onopen = function(event) 
 { 
  ws.send('hello'); 
 }; 
  
 ws.onmessage = function(event) { 
  alert(event.data); 
 }; 
  
 ws.onerror = function(event) { 
  alert(event); 
 } 
</script> 
</body> 
</html> 

最后,启动main方法,访问http://127.0.0.1:9080/index.html即可看到输出

二:nginx配置

nginx 通过在客户端和后端服务器之间建立起一条隧道来支持WebSocket。

为了使nginx可以将来自客户端的Upgrade请求发送给后端服务器,Upgrade和Connection的头信息必须被显式的设置。如下所示:

location /web/count { 
  proxy_pass http://tomcat-server; 
  proxy_redirect off; 
  proxy_http_version 1.1; 
  proxy_set_header Upgrade $http_upgrade; 
  proxy_set_header Connection "upgrade"; 
  proxy_set_header Host $host:$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 Host $host:$server_port;   这个配置

否则,会报:WebSocket connection to 'ws://192.168.1.104:9080/web/count' failed: Error during WebSocket handshake: Unexpected response code: 403的错误

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# springboot  # websocket  # spring整合websocket  # spring  # boot  # nginx  # 详解Nginx如何处理WebSocket连接  # Nginx支持websocket的配置详解  # nginx ingress代理websocket流量的配置方法  # nginx反向代理webSocket配置详解  # 详解nginx websocket配置  # 详解Nginx反向代理WebSocket响应403的解决办法  # Nginx实战之反向代理WebSocket的配置实例  # 简介Nginx服务器的Websockets配置方法  # WebSocket 配置与Nginx 的完美结合(过程详解)  # 会报  # 客户端  # 后端  # 你是  # 相关内容  # 说了  # 要有  # 不多  # 访客  # 给大家  # 所示  # 这篇文章  # 建立起  # 谢谢大家  # 接了  # 创建一个  # 就可以  # 发送给  # 有疑问  # package 


相关文章: 电脑免费海报制作网站推荐,招聘海报哪个网站多?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  如何快速选择适合个人网站的云服务器配置?  如何快速完成中国万网建站详细流程?  宿州网站制作公司兴策,安徽省低保查询网站?  如何在景安服务器上快速搭建个人网站?  如何用虚拟主机快速搭建网站?详细步骤解析  制作证书网站有哪些,全国城建培训中心证书查询官网?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  如何用免费手机建站系统零基础打造专业网站?  如何快速重置建站主机并恢复默认配置?  如何破解联通资金短缺导致的基站建设难题?  婚礼视频制作网站,学习*后期制作的网站有哪些?  Python lxml的etree和ElementTree有什么区别  ,怎么用自己头像做动态表情包?  深圳网站制作的公司有哪些,dido官方网站?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  如何通过NAT技术实现内网高效建站?  宝塔面板如何快速创建新站点?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  制作农业网站的软件,比较好的农业网站推荐一下?  北京网站制作网页,网站升级改版需要多久?  如何快速搭建自助建站会员专属系统?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  浅谈Javascript中的Label语句  建站DNS解析失败?如何正确配置域名服务器?  Android自定义控件实现温度旋转按钮效果  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  安徽网站建设与外贸建站服务专业定制方案  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  建站168自助建站系统:快速模板定制与SEO优化指南  如何高效完成独享虚拟主机建站?  如何配置FTP站点权限与安全设置?  网站制作模板下载什么软件,ppt模板免费下载网站?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  如何快速搭建安全的FTP站点?  南平网站制作公司,2025年南平市事业单位报名时间?  如何在IIS中配置站点IP、端口及主机头?  建站之星备案是否影响网站上线时间?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  nginx修改上传文件大小限制的方法  网站制作费用多少钱,一个网站的运营,需要哪些费用?  红河网站制作公司,红河事业单位身份证如何上传?  家具网站制作软件,家具厂怎么跑业务? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。