有些用户无法连接到websocket

时间:2013-08-14 17:16:19

标签: javascript node.js websocket socket.io

我正在使用socket.io.Some用户向我发送消息'我无法发送消息为什么?'。我研究了这个问题,猜测防火墙或防病毒阻止websocket.If浏览器不支持websocket,socket .io自动切换到xhr轮询,没有问题。但是如果浏览器支持websocket和防病毒或防火墙阻止websocket,socket.io没有切换到xhr,用户无法发送消息。我怎么解决这个问题问题?

这是一个用户的websocket测试报告

http://websocketstest.com/result/244711

Websocket支持没问题,数据接收没有。

2 个答案:

答案 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()