某些用户无法连接到 websocket



我正在使用socket.io。有些用户向我发送消息"我无法发送消息,为什么?"。我研究了这个问题,猜测是防火墙还是防病毒软件阻止了网络套接字。如果浏览器不支持websocket,socket.io会自动切换到xhr轮询,这是没有问题的。但是,如果浏览器支持websocket,并且防病毒或防火墙正在阻止websocket时,socket.io不会切换到xhr,用户也无法发送消息。我该如何解决这个问题?

这是用户的websocket测试报告

http://websocketstest.com/result/244711

Websocket支持可以,数据接收没有。

您可以将Socket.IO设置为在配置中仅使用XHR轮询:

io.configure(function () { 
  io.set("transports", ["xhr-polling"]);
});

请参阅官方文档中的配置Socket.IO。

我发现很多用户最终都无法成功连接到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()

相关内容

  • 没有找到相关文章

最新更新