Javascript Node JS-如何判断是否已使用Einaros WS-Socket模块打开了套接字?
我目前正在使用einaros的NodeJS WS模块创建websocket客户端。 在初始化套接字客户端时,我使用“打开”事件来确定连接何时打开,但一旦连接打开,我将如何检查它是否仍然打开 “WebSocket”对象上是否有可以用来快速检查套接字状态的属性Javascript Node JS-如何判断是否已使用Einaros WS-Socket模块打开了套接字?,javascript,node.js,events,asynchronous,websocket,Javascript,Node.js,Events,Asynchronous,Websocket,我目前正在使用einaros的NodeJS WS模块创建websocket客户端。 在初始化套接字客户端时,我使用“打开”事件来确定连接何时打开,但一旦连接打开,我将如何检查它是否仍然打开 “WebSocket”对象上是否有可以用来快速检查套接字状态的属性 -websocketInstance.readyState是否足够?我认为您应该注意错误并断开回调。这样,当它关闭时,您将收到通知。socket。readyState将告诉您socket认为它的状态是什么。没有比socket.readySta
-websocketInstance.readyState是否足够?我认为您应该注意错误并断开回调。这样,当它关闭时,您将收到通知。
socket。readyState
将告诉您socket认为它的状态是什么。没有比socket.readyState更准确的属性了
如果您想知道套接字何时完成连接并且现在被认为是打开的,那么您可以为open
事件注册一个事件处理程序。这将告诉您何时完成连接
如果希望在套接字关闭或遇到错误时发出实时通知,可以使用事件侦听器来侦听错误
或关闭
事件。close
事件只意味着套接字正在关闭,socket.readyState
值现在更改为closed
检查套接字的最新方法是首先检查socket.readyState
,如果这表示套接字已打开,那么您可以向另一端发送测试数据包,只有当您从测试数据包收到响应时,您才能真正知道套接字正在运行
socket.io
库(构建在WebSocket之上)正是这样做的,它发送定期保持活动的数据包并侦听响应。如果它经过一段时间没有响应,那么它将关闭现有套接字并尝试重新建立一个新的连接(假定之前的连接不知何故丢失)。通过这种方式,socket.io
库甚至可以在服务器重新启动或客户端internet连接临时中断时生存下来,因为它将看到连接丢失,然后透明地在其位置重新建立新连接。如果(socket.readyState==1)
则系统认为套接字仍然打开。你能得到的唯一更好的保证是发送消息并等待响应。如果你想确切知道readyState何时更改为closed,你还可以监视onclose事件。@jfriend00有时onclose
@TheSexiestManinJamaica-阅读下面我回答中的最后一段。这对我来说有点太抽象了。如果您能给我看一些实际的nodejs代码,我将不胜感激。所以假设我想看看在端口5858的localhost上是否有一个侦听器。我如何编写一个函数,如果有则返回true,如果没有则返回false?谢谢。@rocky-这个问题和这里问的不同。我建议你自己开始一个新问题,询问你的具体情况。你可以在评论中把这个新问题链接到这里,我会在你发布后看一看。