问题:

服务端使用了namespace来隔离作用域,也没增加其它配置

一开始使用ip+端口的方式与服务端连接,一切正常,后来采用nginx部署的方式,就凉凉了。

错误信息

Socket.io connection error: Invalid namespace.

排查过程

首先检查nginx的配置文件,确保支持socket连接

详:https://www.nginx.com/blog/nginx-nodejs-websockets-socketio/

配置都没问题后,还是无法正常运转,无奈之下只能去查看nignx日志,然后就发现了这么一行

"GET /socket.io/?EIO=3&transport=polling&t=N9_C80w&b64=1 HTTP/1.1" 404 153 "-" "node-XMLHttpRequest"

然后我就懵了,下面是我的配置

        location /socket-bridge {proxy_pass             http://127.0.0.1:6017;}

我明明配置的是 /socket-bridge并且客户端连接也没问题,那么问题来了,我明明连接的是 /socket-bridge为什么到了nginx这边就成 /socket.io了呢?

然后我试图将nginx中配置更改为

        location  /socket.io {proxy_pass             http://127.0.0.1:6017;}

结果!!!它就好了!!!

然后,我去仔细核对了一下正式环境中的网关配置(这里指生产环境的nginx配置),发现 /socket.io已经被使用

        location /socket.io/ {proxy_pass             http://mercurius;}

然后我就明白为什么它会给我报上面那个错误了,原来连接都被代理到 mercurius 去了,但是 mercurius又不存在我所连接的 namespace

然后,根据查文档,又有新的发现,发现连接的时候有一个 path参数。

原来是因为我没有配置path参数导致nginx收到的连接都是以默认值 /socket.io开头的。

socket与http接口不同

如何解决

增加path参数

Socket.io部署遇到的坑相关推荐

  1. socket.io跨域踩坑

    一.koa结合socket.io 后端代码: // 引入依赖 const koa = require("koa"); // 初始化koa const app = new koa() ...

  2. .NET下使用socket.io随笔记录

    一.问题背景 目前公司在互联网产品上需要程序与前端部分要进行一个实时交互,在进行一定程度上的选型后,决定使用socket.io框架进行一个实践,算是公司的一个新的 尝试,也算是给自己增加增长见闻,由于 ...

  3. 使用express、react、webpack打包、socket.io、mongodb、ant.design、less、es6实现聊天室

    拿到一个项目,我们应该如何去完成这个项目呢. 是直接上手? 还是先进行分析,然后再去解决呢?毫无疑问,如果直接上手解决,那么可能会因为知道目标所在,而导致出现各种问题. 所以,我们应该系统的分析这个项 ...

  4. webrtc+canvas+socket.io从零实现一个你画我猜 | 掘金技术征文

    开场白 最近键盘坏了,刚好看到掘金有声网的技术征文,想整个键盘.于是就开始从零开始学习webrtc, 一开始看文档就是个素质三连.这么难啊,这咋整啊,这谁顶的住啊.于是就开始全网找资料,很幸运的在掘金 ...

  5. 使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(一)

    这几篇都是我原来首发在 segmentfault 上的地址:https://segmentfault.com/a/1190000005040834 突然想起来我这个博客冷落了好多年了,也该更新一下,呵 ...

  6. 【Spring Boot】集成Netty Socket.IO通讯框架

    服务端 1 @Configuration 2 public class NettySocketConfig { 3 4 private static final Logger logger = Log ...

  7. 使用React,TypeScript和Socket.io构建聊天应用

    This is going to be a thorough step-by-step guide for building a single page chat application using ...

  8. 【博客大赛】100行js代码实现网站在线用户数量统计 nodejs + socket.io方案

    需求提出 公司的在线培训平台,需要增加一个新功能:实时统计当前在线的用户数量并在终端界面上显示,需要的时候可以查询当前在线的用户的明细. 有3种技术方案可以选用: 1)改动后台代码,在用户登录和退出时 ...

  9. 基于socket.io的php扩展介绍---phpsocket.io

    工具地址:https://github.com/walkor/phpsocket.io phpsocket.io是由workerman根据socket.IO扩展的用于php服务端通讯组件,后台服务用w ...

最新文章

  1. alert(1) to win 16
  2. python 多边形曲线
  3. php基于新浪ip库获取城市,PHP基于新浪IP库获取IP详细地址的方法
  4. SAP SD数据库表一览
  5. ble mac地址 协议_BLE获取iphone mac地址的方法--【sky原创】
  6. Java2017面试宝典--XML部分、 流行的框架与新技术、软件工程与设计模式、 j2ee部分、EBJ部分、 webservice部分...
  7. 翁同龢后人向上海博物馆捐赠两件重要家藏
  8. echarts 获取点击的y轴数值_有机磷酸催化对醌的不对称直接加成反应合成轴手性芳基醌类化合物...
  9. 在搜索框自动输入文本_【Zotero文档翻译】管理篇:搜索
  10. cherokee php,CentOS安装最快Web服务器Cherokee+MySQL+PHP
  11. 计算机组成与系统结构第二版第5章,计算机组成与系统结构第五章答案.pdf
  12. cpu超频软件_AMD 锐龙7 3700X(默频)全面对决i7-9700K(超频至5.0GHz)
  13. 得到一棵树 取自表内自递归(即ID 与ParentID)
  14. Linux内核绑定1号cpu,Linux绑定硬件IRQ到指定CPU核
  15. 魔兽各服务器位置,魔兽世界怀旧服矿点分布在哪 全地图采矿位置一览(多图)
  16. uniapp全端应用商城系统,应用市场APP,软件库APP,葫芦芥子博客
  17. ClickHouse安装部署
  18. 计算机专业考研的好学校排名2015,计算机类专业考研最好的学校排名
  19. 【C语言】#文件操作#有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。
  20. C语言两分钟倒计时小程序

热门文章

  1. Cython中“@cython.boundscheck\@cython.wraparound(False)”有什么用?
  2. [leetcode] 467. Unique Substrings in Wraparound String
  3. 【QNX Hypervisor 2.2 用户手册】4.1 构建QNX Hypervisor系统的方法
  4. Mac生成CertificateSigningRequest文件(CSR文件)
  5. 个推clientId老是获取不到几点解决办法
  6. Word2VecDoc2Vec总结
  7. 击破IT墨菲定律的10种方式
  8. 几个比较稳定可靠的网络硬盘(免费)
  9. linux硬盘SMART检查
  10. uview三级联动方法