【问题标题】:Web socket exception could not be caught无法捕获 Web 套接字异常
【发布时间】:2014-09-07 07:50:11
【问题描述】:

当我故意关闭客户端 JavaScript 代码时:

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

在 Chrome 控制台中写入:

WebSocket is already in CLOSING or CLOSED state.

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

【问题讨论】:

    标签: javascript websocket ping disconnect reconnect


    【解决方案1】:

    我接受了无法捕捉到错误这一事实并实施了乒乓解决方案。

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

    【讨论】:

      【解决方案2】:

      您可以查看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);
      }
      

      【讨论】:

        猜你喜欢
        • 2011-11-02
        • 1970-01-01
        • 1970-01-01
        • 2010-10-29
        • 1970-01-01
        • 2021-10-09
        • 2014-07-09
        • 2021-09-17
        相关资源
        最近更新 更多