WebSocket遇到的一些问题
2024-09-04 17:16:59
一 、Nginx配置websocket
为了解决Nginx转发不能进行websocket通信问题
将nginx配置文件添加如下内容:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server 192.168.100.10:8010;
}
server {
listen 8020;
location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
}
二、Nginx拦截器解决浏览器兼容问题
public class HandshakeInterceptor extends HttpSessionHandshakeInterceptor { private final Logger logger = LoggerFactory.getLogger(HandshakeInterceptor.class); @Override
public boolean beforeHandshake(ServerHttpRequest request,
ServerHttpResponse response, WebSocketHandler wsHandler,
Map<String, Object> attributes) throws Exception {
logger.info("==============Before Handshake===============");
/** 在拦截器内强行修改websocket协议,将部分浏览器不支持的 x-webkit-deflate-frame 扩展修改成 permessage-deflate */
if(request.getHeaders().containsKey("Sec-WebSocket-Extensions")){
request.getHeaders().set("Sec-WebSocket-Extensions", "permessage-deflate");
}
return super.beforeHandshake(request, response, wsHandler, attributes);
} @Override
public void afterHandshake(ServerHttpRequest request,
ServerHttpResponse response, WebSocketHandler wsHandler,
Exception ex) {
logger.info("==============After Handshake===============");
super.afterHandshake(request, response, wsHandler, ex);
} }
最新文章
- CodeForces - 662A Gambling Nim
- js禁用右键菜单、选中、复制、剪切、粘贴
- 微信";流量红包";的玩法攻略 广东移动用户有福啦
- block的使用
- TreeSet和Comparator 对TreeSet排序
- 使用MarkdonPad2学习心得
- ExpressRoute
- 图解TCP/IP读书笔记(二)
- Java从入门到精通——数据库篇之OJDBC版本区别
- 【转】MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- is present but cannot be translated into a null value due to being declared as a primitive type
- inline-block布局方式
- Linux C/C++计划Shell命令大杂烩(1)
- 构建一个真实的应用电子商务SportsStore(十)
- RE模块错误已解决.
- MSM平台RPM
- JS倒计时两种种实现方式
- 更新glibc版本,有问题,有三篇博客的命令看不懂
- [android开发教程] 一个神奇的Demo 帮你掌握所有android控件
- day_5.21 py 高级编程
热门文章
- LOG收集系统(一):原日志至收集
- 基于tiny4412的Linux内核移植(支持device tree)(一)
- 某游戏研究之字符过滤类-WorldFilter
- 二十四种设计模式:解释器模式(Interpreter Pattern)
- xss payload
- axios踩坑记录+拦截器使用+vue cli代理跨域proxy+webpack打包部署到服务器
- MVP+Dagger2+Rxjava+Retrofit+GreenDao 开发的小应用,包括新闻、图片、视频3个大模块,代码封装良好
- 【云计算】OpenStack Horizon DashBoard定制化,完整实现前后台交互
- Android媒体扫描详细解析之一(MediaScanner &; MediaProvider)
- Android 面试题目汇总