在我的Web应用程序中,我使用Node.js和Socket.io.
当我测试本地或我的wifi网络中的应用程序一切都很好但是因为我切换到移动数据我得到连接错误:
WebSocket connection to
‘ws://url/socket.io/1/websocket/’
Failed: Error during WebSocket handshake: Unexpected response code:
502
似乎我的移动提供商正在阻止端口8080和80,但是使用nodejitsu似乎无法切换到另一个端口.
有人有一些经验如何处理移动网络,node.js和socket.io?
编辑:
作为主持人,我尝试了免费订阅Heroku和免费订阅Nodejitsu.
在移动设备上,我使用移动设备和wifi检查了http://websocketstest.com/上的端口.在移动设备上,测试失败,端口80和8080.
我想也许我可以将端口更改为443,但即使我将server.listen()设置为端口443,nodejitsu似乎也会侦听端口80.
我认为WebSockets可能是通过另一个端口实现的,但我不知道如何更改端口或者为什么nodejitsu例如只是在监听端口80.
解决方法
HTTP 502表示“Bad Gateway”,通常是客户端和服务器之间路径上的反向代理的标志.
如果你确定这不是因为你自己的设置,你应该尝试禁用socket.io的websocket(和flashsocket)传输:
var io = require('socket.io').listen(...); io.set('transports',[ 'xhr-polling','jsonp-polling','htmlfile' ]);