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

を確認できます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 に答える
1

私は、エラーをキャッチできなかったという事実に同意し、ピンポン ソリューションを実装しました。

JavaScript は n 秒ごとに「ping」コマンドを送信し、サーバーは「pong」で応答する必要があります。応答なしで 5 回を超える「ping」が送信された場合、再接続が開始されます。

于 2014-08-08T09:04:12.620 に答える