如何获取javascript websocket连接的当前状态

Joh*_*ide 44 javascript client websocket

有时当我重新启动服务器或网络出现故障时,websocket会关闭,我希望能够始终获得当前的连接状态.

我基本上得到以下错误,我希望能够预测它:

WebSocket is already in CLOSING or CLOSED state. 
    (anonymous function) 
    InjectedScript._evaluateOn 
    InjectedScript._evaluateAndWrap 
    InjectedScript.evaluate
Run Code Online (Sandbox Code Playgroud)

Joh*_*ide 75

这非常简单:readyStatewebsocket 的属性始终包含websocket的连接,如WebSocket API中指定的那样

它将是以下值之一:CONNECTING OPEN CLOSINGCLOSED

解决错误的方法是这样的:

if (yourWsObject.readyState === WebSocket.CLOSED) {
   // Do your stuff...
}
Run Code Online (Sandbox Code Playgroud)

  • api 的正确答案。需要注意的是,即使您尝试在没有连接的情况下进行连接,“yourWsObject.readyState”也将为“1”(打开)。我已经使用远程后端对其进行了测试,尝试从 Android 模拟器进行连接。关闭笔记本电脑上的 Wifi 并尝试从模拟器连接到删除套接字服务器后,我仍然在“readyState”上打开 (4认同)
  • socket.readyState !== WebSocket.CLOSED && socket.readyState !== WebSocket.CLOSING ?真假; (2认同)
  • 另一种选择可能是自己维护一个布尔值,“onopen”->“true”,“onclose”->“false”。 (2认同)