在 websockets 上 Express socket.io 错误 404

Posted

技术标签:

【中文标题】在 websockets 上 Express socket.io 错误 404【英文标题】:Express socket.io erroring 404 on websockets 【发布时间】:2015-01-28 11:47:24 【问题描述】:

我在我的 express.js 应用程序中使用 socket.io,但是在尝试通过 websockets 传输时,它不断从我们的 UAT 服务器返回 404。

值得注意的是,在我的本地服务器上一切正常,所以我认为这是 UAT 上的某种配置。

这是实际的错误: WebSocket connection to 'ws://timesheet.hw.s2.hwuat.com/socket.io/?EIO=2&transport=websocket&sid=eUtgUXweLDzSblrjAAE8' failed: Error during WebSocket handshake: Unexpected response code: 400

-- 示例请求--

请求网址ws://timesheet.hw.s2.hwuat.com/socket.io/?EIO=2&transport=websocket&sid=AssKCIfT3vTVwmHcAAE4 - 失败

请求网址http://timesheet.hw.s2.hwuat.com/socket.io/?EIO=2&transport=polling&t=1422444487679-3&sid=AssKCIfT3vTVwmHcAAE4 - 成功

我不太擅长 websockets,所以我真的不知道从哪里开始寻找,以前有没有人遇到过这个问题,或者可以指出可能导致此问题的起始方向?

【问题讨论】:

我猜是因为代理 【参考方案1】:

我在尝试访问负载均衡器后面的 websocket 时遇到了同样的问题。您的 UAT 环境是否使用任何负载平衡?我使用的是 AWS ELB,并且不得不将平衡器从 HTTP 更改为 TCP,因为 Web 套接字在 TCP 上通信,HTTP 侦听器无法路由请求。

【讨论】:

以上是关于在 websockets 上 Express socket.io 错误 404的主要内容,如果未能解决你的问题,请参考以下文章

端口 34037 已在使用 Heroku + Nodejs + Express + WebSockets

使用 Apollo Express、Nginx 和 docker-compose 保护 websocket

如何在 express 的获取请求中执行 websocket 连接事件?

为 Express 定义 Websocket 路由

如何在 Express 应用程序中通过 SSL 获取 websocket?

NextJS,Express,WebSocket 握手期间出错:意外响应代码:200