博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在实践中我遇到stompjs, websocket和nginx的问题与总结
阅读量:6980 次
发布时间:2019-06-27

本文共 2016 字,大约阅读时间需要 6 分钟。

阅读原文:

1. AWS EC2 不支持WebSocket

简单说一下思路:WebSocket底层基于TCP协议的,如果你的服务器基于HTTP协议暴露80端口,那WebSocket肯定无法连接。你只要将HTTP协议修改成TCP协议就可以了。

这个问题也会导致stompjs连不上服务端,报什么版本不兼容的日志

然后是安全组的配置:

同样如果使用了NGINX作为反向代理,那么NGINX也需要做配置的。

// https://gist.githubusercontent.com/unshift/324be6a8dc9e880d4d670de0dc97a8ce/raw/29507ed6b3c9394ecd7842f9d3228827cffd1c58/elasticbeanstalk_websocketsfiles:    "/etc/nginx/conf.d/01_websockets.conf" :        mode: "000644"        owner: root        group: root        content : |            upstream nodejs {                server 127.0.0.1:8081;                keepalive 256;            }            server {                listen 8080;                location / {                    proxy_pass  http://nodejs;                    proxy_set_header Upgrade $http_upgrade;                    proxy_set_header Connection "upgrade";                    proxy_http_version 1.1;                    proxy_set_header        Host            $host;                    proxy_set_header        X-Real-IP       $remote_addr;                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;                }            }    "/opt/elasticbeanstalk/hooks/appdeploy/enact/41_remove_eb_nginx_confg.sh":        mode: "000755"        owner: root        group: root        content : |            mv /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf.old

2. NGINX做反向代理是需要注意的问题

如果排除所有问题后,那剩下的问题可以考虑出在反向代理上,一下有几点是可以考虑的。

  • HTTP的版本问题: http有三个版本,http 1.0, 1.1, 2.0, 现在主流的浏览器都是使用http 1.1版本,为了保证更好的兼容性,最好转发时不要修改协议的版本号
  • 路径重写的编解码问题: NGINX具有路径重写功能,如果你使用了该功能,就要考虑问题可能出在这里,因为NGINX在路径重写时,需要对路径进行编解码,有可能在解码之后,没有编码就发送给后端的服务器,导致后端服务器无法对URL进行解码。

3. IE8 IE9 有没有简单方便支持WebSocket的方案

目前测试下来,最简单方案是基于flash的。参考:

注意该方案需要在WebSocket服务上的843端口, 提供, 也可以参考:

网上也有教程是使用socket.io基于ajax长轮训的方案,如果服务端已经确定的情况下,一般是不会轻易改动服务端代码的。而且ajax长轮训也是有延迟,和disconnect时,无法回调的问题。

4. stompjs connected后,没有调用connect_callBack

该问题主要是使用web-socket-js,在ie8,ie9上出现的

该问题还没有分析出原因,但是看了stompjs的源码不是太多,明天用源码调试看看原因。

具体原因已经找到,参考。

5. 参考文献

  • ,

转载地址:http://thjpl.baihongyu.com/

你可能感兴趣的文章
redis与mysql数据同步
查看>>
js获取url传递参数
查看>>
TF-IDF原理及使用
查看>>
jQuery中bind方法与live方法区别
查看>>
Android TCP/IP Socket Test
查看>>
分布式锁方案论证与实现
查看>>
海外邮件屡屡退信,使用海外邮件中继势不可挡
查看>>
ExtJS中Controller类的动态加载.
查看>>
读文档啊jfinal
查看>>
MAc常用命令
查看>>
js函数没有重载
查看>>
团队管理的“五大核心要素”
查看>>
linux下vi命令大全
查看>>
插入排序
查看>>
android 简易播放器实现
查看>>
职场人:跳槽规划三点注意不可忽略
查看>>
IP 协议简介
查看>>
PHP特级课视频教程_第十五集 MySQL基础操作(一)_李强强
查看>>
pthread_create
查看>>
通用dao设计
查看>>