1

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

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

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

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

谢谢。

4

1 回答 1

1

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

于 2012-09-21T11:29:56.507 回答