web-dev-qa-db-ja.com

Socket.ioクライアントの接続ステータスを取得する

Socket.ioを使用していますが、クライアント側からサーバーへの接続状態を知りたいです。

このようなもの:

socket.status // return true if connected, false otherwise

接続が切断されたり、何らかの理由で切断されたりした場合に、ユーザーに視覚的なフィードバックを提供するために、この情報が必要です。

58
franzlorenzon

socket.connectedプロパティを確認できます:

var socket = io.connect();
console.log('check 1', socket.connected);
socket.on('connect', function() {
  console.log('check 2', socket.connected);
});

動的に更新されます。接続が失われた場合、クライアントが再び接続を取得するまで、falseに設定されます。 setIntervalなどで簡単に確認できます。

別の解決策は、disconnectイベントをキャッチし、自分でステータスを追跡することです。

108
robertklep

この機能を使用すると、接続が失われたかどうかを確認できます。

var socket = io( /**connection**/ );
socket.on('disconnect', function(){
//Your Code Here
});

それがあなたを助けることを願っています。

6
Ansari Abdullah

接続の状態を自分で追跡します。ブール値付き。宣言時にfalseに設定します。さまざまなイベント(接続、切断、再接続など)を使用して、現在のブール値を再割り当てします。注:文書化されていないAPI機能(socket.connectedなど)を使用することはお勧めできません。この機能は、削除が記載されていない後続のバージョンで削除される可能性があります。

2
Ilan

最近では、socket.on( 'connect'、...)が機能していません。以下のコードを使用して、最初の接続時に確認します。

if (socket.connected)
  console.log('socket.io is connected.')

再接続時にこのコードを使用します。

socket.on('reconnect', ()=>{
  //Your Code Here
});
1
Na Nonthasen

socket.connectedをチェックする@robertklepの答えは、再接続イベントを除いて正しいです https://socket.io/docs/client-api/#event-reconnect 再接続に成功しました。」しかし、socket.connectedをチェックすると、falseです。

それがバグなのか意図的なのかはわかりません。

1
Qiulang