Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node JS-如何判断是否已使用Einaros WS-Socket模块打开了套接字?_Javascript_Node.js_Events_Asynchronous_Websocket - Fatal编程技术网

Javascript Node JS-如何判断是否已使用Einaros WS-Socket模块打开了套接字?

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

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

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


-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-这个问题和这里问的不同。我建议你自己开始一个新问题,询问你的具体情况。你可以在评论中把这个新问题链接到这里,我会在你发布后看一看。