我在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不太好,所以我真的不知道从哪里开始寻找,有没有人遇到过这个问题,或者可以指出我可能导致这个问题的起始方向?
答案 0 :(得分:1)
尝试访问负载均衡器后面的websockets时遇到了同样的问题。您的UAT环境是否使用任何负载平衡?我使用AWS ELB并且必须将我的平衡器从HTTP更改为TCP,因为Web套接字在TCP上进行通信,HTTP侦听器无法路由请求。