0

当我故意关闭 Web 套接字服务器时,客户端 JavaScript 代码:

try
{
    self.socket.send('ping');
}
catch(ex)
{
    console.log('exception');
}

在 Chrome 控制台中写道:

WebSocket is already in CLOSING or CLOSED state.

try-catch 无法捕获此异常。如何确定无法通过 Web 套接字发送数据?onclose 事件没有被触发。

4

2 回答 2

1

我接受了无法捕获错误并实施乒乓解决方案的事实。

JavaScript 每 n 秒发送一个“ping”命令,服务器应以“pong”响应。如果发送了超过 5 个“ping”而没有响应,则会启动重新连接。

于 2014-08-08T09:04:12.620 回答
1

您可以检查readyState.

try
{
  if (self.socket && self.socket.readyState === 1) {
    self.socket.send('ping');
  }
  else {
    throw(new Error("WebSocket is not in OPEN state."));
  }
}
catch(ex)
{
  console.log('exception', ex);
}
于 2015-12-15T18:19:13.333 回答