2016-09-06 6 views
0

クライアントからサーバーインターネットへのコールバックはどうすればできますか?私はユーザーがいて、いくつかの部屋で接続を追加しました。しかし、インターネットがいつダウンしているのか分かりません。私は彼らの彫像をコールバックしたいが、私はどのように知らない。私のクライアントはアンドロイド電話です。クライアントインターネットがオフになったときのSocket.io

この機能は動作しません。

socket.on("disconnect", function() { 
    var SocketRoom= socket.room; 
    socket.leave(SocketRoom); 
}); 

答えて

2

クライアントは、ネットワーク/インターネットに接続していない場合、ソケット接続でメッセージを送信できません。タイムアウトがないかどうかチェックしたいかもしれません。

クライアントがサーバーに接続すると、サーバーは一定の時間間隔(5秒ごとなど)でクライアントにメッセージを送信します。 クライアントがそのメッセージに応答する場合は、それでも問題は解決されていて、プログラムロジックを継続します。 クライアントがあなたのメッセージに応答しない場合、クライアントはもはやインターネットに接続されていない可能性が非常に高いです(または他の理由で到達できない可能性があります)。このような場合は、部屋の外に出るように強制することができます(socket.on("disconnect", ...)関数のように)。

ご注意:

  • 高いタイムアウト間隔は、あまり正確では実際の切断時間ですが、接続の負荷が低く抑えられています。
  • クライアントがタイムアウトチェックに応答しない場合、接続を強制的に閉じる前に、そのクライアントにメッセージを数回送信するように再試行することができます。
+0

大丈夫です。しかし... ....私は接続を学ぶためにsesivityの結果が必要です。 0.1〜0.5秒ごとに送信すると、サーバーが正常に動作していないと思っています。どのように私は彼らに信号を送ることができますか?この方法を使用すると、私のサーバーはあまりにも遅れて私に答えますか?それのための方法はありません?私は今それを使用していますが、あなたのアイデアよりも良いアイデアが必要です。しかし、あなたは正しいです。私がサーバーからクライアントに何らかの信号を送り、クライアントが私に答えることができなければ、合意は間違っています... –

+1

いいえ、それは私の知る限りではありません。インターネット接続を失った場合、サーバーにメッセージを送信することはできません。 ;) タイムアウトを長くすることはできますが、ほとんどの場合1-2秒で問題ありません。 – RicoBrassers

+0

さて、私は今この方法を使用しています:)ただそれを求めてください。私はそれのための道があると思う:D :)しかし私達は見る...シグナルが私のサーバーを強くしているのであなたは知っている: –

関連する問題