在先前失败的尝试之后,Socket.io事件一旦连接就不会触发

时间:2012-09-21 10:38:06

标签: javascript node.js websocket socket.io

这是一个场景,我有一个客户端应用程序,由PHP在不同的服务器上提供给node.js + socket.io应用程序。它可以连接和接收从服务器发送的广播。如果连接断开,应用程序将回退到轮询数据库(使用setInterval())。它尝试重新连接每5次民意调查,它可以成功重新连接并继续接收消息。

我的问题发生在用户加载页面并且无法访问节点服务器时(我将其关闭以进行测试),然后我打开服务器并在第5轮询,它成功连接到服务器,使用{{ 1}}。但是,只要服务器广播消息,它就不会触发事件。请注意,在手机上进行测试时,这种情况不会发生(回退到不同的套接字方法)

我已经看到了Reconnection in socket.io problem in `socket.on('message',function(){})`中发现的问题,但是套接字以前没有连接过,所以我认为它不是会话?

编辑:我将socket.socket.reconnect();更改为socket.socket.reconnect()并解决了问题。如果有人能够解释为什么这有效的原因,我想知道。我知道它,因为服务器实际上并没有重新连接,但想了解更多信息。

感谢。

1 个答案:

答案 0 :(得分:1)

你很可能知道这个的原因。服务器没有重新连接。它实际上是连接。当你告诉socket.io重新连接时,它会搜索以前的连接句柄以及出现问题的地方。