节点的JS – 如何告诉如果一个套接字已经打开与Einaros WS套接字模块?

我目前使用einaros的NodeJS WS模块来创build一个websocket客户端。 在初始化套接字客户端时,我使用“open”事件来确定连接何时打开,但一旦打开,我将如何检查它是否仍然打开?

在“WebSocket”对象上是否有一个属性可以用来快速检查套接字的状态?

是 – websocketInstance.readyState – 是否足够?

socket.readyState会告诉你套接字认为它的状态是什么。 没有其他的更准确的属性,你可以咨询比socket.readyState

如果你想知道什么时候套接字已经完成连接,现在被认为是开放的,那么你可以为open事件注册一个事件处理程序。 这将告诉你何时完成连接。

如果您想在套接字closures或遇到错误时进行实时通知,则可以使用事件侦听器来处理errorclose事件。 close事件只是意味着socket正在closures,而socket.readyState值现在正在变为closures状态。

更保证是检查套接字的最新方法是首先检查socket.readyState ,如果说套接字是打开的,那么你可以发送一个testing包到另一端,只有当你得到一个响应从testing数据包回来你真的知道套接字是可操作的。

socket.io库(构build在webSockets之上)完成这个工作,定期发送keep-alive数据包并监听响应。 如果过了一段时间没有响应,那么它将closures现有的套接字,并试图重新build立一个新的连接(事先连接丢失)。 通过这种方式, socket.io库甚至可以在服务器重新启动或客户端互联网连接暂时socket.io情况下生存,因为它会看到连接丢失,然后透明地重新build立新的连接。

我认为你应该注意错误并断开callback。 这样你会在closures时得到通知。