无法捕获Web套接字异常

时间:2014-07-16 17:02:46

标签: javascript websocket ping disconnect reconnect

当我故意关闭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事件未被解雇。

2 个答案:

答案 0 :(得分:1)

我同意了这个错误无法捕获并实施乒乓球解决方案的事实。

JavaScript每隔n秒发送一次'ping'命令,服务器应该以'pong'响应。如果在没有响应的情况下发送超过5个“ping”,则启动重新连接。

答案 1 :(得分: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);
}