我正在使用socket.io.Some用户向我发送消息'我无法发送消息为什么?'。我研究了这个问题,猜测防火墙或防病毒阻止websocket.If浏览器不支持websocket,socket .io自动切换到xhr轮询,没有问题。但是如果浏览器支持websocket和防病毒或防火墙阻止websocket,socket.io没有切换到xhr,用户无法发送消息。我怎么解决这个问题问题?
这是一个用户的websocket测试报告
http://websocketstest.com/result/244711
Websocket支持没问题,数据接收没有。
答案 0 :(得分:0)
您可以将Socket.IO设置为仅在配置中使用XHR轮询:
io.configure(function () {
io.set("transports", ["xhr-polling"]);
});
请参阅官方文档中的Configuring Socket.IO。
答案 1 :(得分:0)
我发现很多用户最终无法与socket.io成功连接。我没有尝试不断地诊断它,而是开始构建我的应用程序以便轻松回退到ajax。事实上,我可以将useSocketIO的环境变量更改为false,整个站点,聊天,小费,图像共享将回退到ajax。这并没有解决潜在的问题,但是在丢失的数据没有被传输方面给我带来了很多麻烦。
客户端上的伪代码
# check that I have a socket object
if socket != null
# if not connected, try to reconnect
if !socket.connected and !socket.connecting
attemptResetOfSocketIO()
# if now connected, send socket message
if socket.connected or socket.connecting
sendSocketMessage()
else
# not connected, send via ajax
sendAjaxMessage()
else
# no socket object, send via ajax
sendAjaxMessage()