一旦以前的失败尝试连接Socket.io事件不会触发

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

我的问题发生在用户加载页面和节点服务器无法到达(我把它closurestesting),然后打开服务器,并在5轮询,它成功地连接到服务器,使用socket.socket.reconnect(); 。 但是,只要服务器广播消息,它就不会触发事件。 请注意,这不会发生在手机上testing(回落到不同的套接字方法)

我已经看到在这里find的问题重新连接socket.io问题在'socket.on('消息',函数(){})` ,但套接字之前没有连接,所以我不认为这可能是会议?

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

谢谢。

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