阅读原文:https://wdd.js.org/stomp-over...

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: rootgroup: rootcontent : |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: rootgroup: rootcontent : |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的。参考:https://github.com/gimite/web...

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

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

4. stompjs connected后,没有调用connect_callBack

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

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

具体原因已经找到,参考https://github.com/wangduandu...。

5. 参考文献

  • STOMP Over WebSocket
  • STOMP Protocol Specification, Version 1.1
  • Stomp Over Websocket文档,

在实践中我遇到stompjs, websocket和nginx的问题与总结相关推荐

  1. 前端和后端开发人员比例_前端开发人员vs后端开发人员–实践中的定义和含义

    前端和后端开发人员比例 Websites and applications are complex! Buttons and images are just the tip of the iceber ...

  2. tmux系统剪切板_实践中的tmux:与系统剪贴板集成

    tmux系统剪切板 by Alexey Samoshkin 通过阿列克谢·萨莫什金(Alexey Samoshkin) 在实践中使用tmux:与系统剪贴板集成 (tmux in practice: i ...

  3. 复旦肖仰华:领域知识图谱落地实践中的问题与对策

    肖仰华博士,复旦大学计算机科学与技术学院教授,博士生导师,知识工场实验室负责人. 报告摘要:近年来,知识图谱技术进展迅速,各种领域知识图谱技术在很多领域或行业取得了显著落地效果.在领域知识图谱技术的落 ...

  4. SVM算法在项目实践中的应用!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:苏丽敏,Datawhale优秀学习者,北理工计算机硕士 支持向量机 ...

  5. 高可用 Prometheus 架构实践中的踩坑集锦

    监控系统的历史悠久,是一个很成熟的方向,而 Prometheus 作为新生代的开源监控系统,慢慢成为了云原生体系的事实标准,也证明了其设计很受欢迎. 本文主要分享在 Prometheus 实践中遇到的 ...

  6. 奥卡姆剃刀是什么?机器学习实践中那些学习模型或者那些评估指标践行了这一理论?

    奥卡姆剃刀是什么?机器学习实践中那些学习模型或者那些评估指标践行了这一理论? 奥卡姆剃刀:无无必要,勿增实体. 奥卡姆剃刀原理应用于模型选择时变为以下想法:在所有可能选择的模型中,能够很好地解释已知数 ...

  7. SAP WM Storage Location Reference在项目实践中的使用

    SAP WM Storage Location Reference在项目实践中的使用 笔者目前所在的一个项目是一个已经上了SAP系统,但是需要扩展到新工厂的项目.该项目在组织结构设计的时候,结合业务的 ...

  8. 在实践中深入理解IP协议

    本文为我个人计划撰写的博客专题<在实践中深入理解常见网络协议>中关于IP协议的一篇,有兴趣的朋友可以继续关注我的博客,我将会陆续撰写各种协议的实践分析文章. TCP/IP协议栈其实当然不止 ...

  9. 产业AI实践中,如何有效提升图像识别精度、实现极小目标检测? | 百度AI公开课报名...

    位来 发自 凹非寺 量子位 报道 | 公众号 QbitAI 目前,各个企业行业在AI落地应用中,常常会遇到极小目标检测问题. 如工业质检场景中对轴承.喷油嘴等精密金属部件的细微缺陷检测:电力巡检场景在 ...

最新文章

  1. Microsoft .NET Framework 4.6.1
  2. C# 禁止修改已装箱了的值类型的字段值,但是可以通过接口的方式实现
  3. linux 附加数据库文件,SQL Server 数据库分离与附加图文详解
  4. 从入门到入土:基于Python爬取四川大学所有官方网站|狗头保命|
  5. 使用Microsoft R Server进行机器学习和模型发布(2)
  6. Gemini 2 for Mac(重复文件查找清理工具)
  7. linux中date命令y与Y区别,Linux命令之date
  8. 3维人体建模历史最全算法、论文、数据等资源整理分享
  9. PCL库实时显示点云流
  10. SMAA算法详解 - SMAAEdgeDetectionVS
  11. 文本编辑快捷键_42种以上几乎可以在任何地方工作的文本编辑键盘快捷键
  12. C++新老多线程写法的比较【水一下】
  13. SublimeText 设置全部保存快捷键
  14. 电脑开机画面如何更换
  15. 谷歌FLoC与禁用第三方Cookie后的江湖道术
  16. 神经网络与深度学习(一):神经网络与数字识别
  17. mysql输出max函数_MySQL中的max()函数使用教程
  18. 戴尔笔记本Windows10安装Ubuntu18.04实现双系统总结
  19. 巴塞罗那WASM IO大会
  20. 树莓派PCA9685的舵机MG996R二度自由云台操控代码,搭配mqtt进行远程操控

热门文章

  1. 《Python数据分析与挖掘实战》一3.1 数据质量分析
  2. PHP 异常类 Exception 高洛峰 细说PHP
  3. iOS绘制图片与文字
  4. 开发中新游戏《庞加莱》
  5. ubuntu操作系统下载
  6. linux中的for命令
  7. vi/vim: 使用taglist插件
  8. swift 中showAlertTitle的使用
  9. 软工作业 5:词频统计——增强功能
  10. java并发编程——并发容器类介绍