我正在使用Socket.io在我的Node.js服务器和客户端网站之间进行通信。一切都很棒!除了一件事。
我允许用户从Socket.io断开连接并稍后重新连接,或者至少我正在尝试。请记住,调用io()的套接字存储在mySocket中,使用mySocket.io.disconnect()
进行断开连接可以正常工作。服务器捕获它,客户端知道它已断开连接,这很棒。问题是我以后尝试重新连接...
首先,我只是尝试再次设置mySocket=io()
,但失败了。我了解到有一种重新连接方法,所以我尝试使用它,我的问题变得更糟。所以现在我正在使用mySocket.io.reconnect()
,我得到了一些奇怪的结果,如下所述。
首先,服务器正在进行重新连接尝试。它正好赶上on('connection',...)
事件。但是,CLIENT似乎认为它从未重新连接 - 例如,mySocket.connected
的值保持在false
并且所有emit()
调用都失败(并且永远不会到达服务器)。
除了mySocket.io.reconnect()
之外,是否还有一些我应该使用的特殊方法?或者我应该设置一些变量或参数?如果客户端认为它没有连接,为什么我的服务器会重新连接?发生了什么,我该如何解决?
答案 0 :(得分:2)
在客户方:
mySocket = io('/', {forceNew: true})
在类似的情况下帮助了我。