前言

本文主要给大家介绍了关于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小时内与您取得联系。