2016-09-06 45 views
0

如何從客戶端到服務器互聯網回叫?我有用戶,我在一些房間中加入了他們的連接。但我不知道他們什麼時候會上網。我想回傳他們的雕像,但我不知道如何。我的客戶是Android手機。當客戶端互聯網關閉時,Socket.io

此功能不起作用。

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

回答

2

客戶端不能通過套接字連接發送消息,如果他們沒有連接到網絡/互聯網了。你可能想檢查超時。

一旦客戶端連接到服務器,服務器就會以固定的時間間隔(如每5秒)向客戶端發送一條消息。 如果客戶端響應該消息,你知道,它仍然是conenct並繼續你的程序邏輯。 如果客戶沒有回覆您的消息,那麼他們很可能不再連接到互聯網(或因其他原因無法訪問)。如果是這種情況,你可以強迫他們離開房間(就像你的socket.on("disconnect", ...)功能)。

請注意:

  • 越高的超時間隔,則不太精確是實際的斷開連接時間,但連接的負荷抑制得較低。
  • 如果客戶端沒有響應超時檢查,您可能需要重試在強制關閉連接之前多次向該客戶端發送消息。
+0

好吧這很好。但是......我需要關於學習連接的關鍵結果。如果我發送每0.1-0.5秒我的服務器工作不好,認爲我有很多連接。我怎樣才能發送信號?如果我用這種方式,我的服務器回答得太晚了吧?有沒有辦法呢?我現在正在使用它,但我需要一個比你的想法更好的主意。但你是對的。如果我發送一個信號從服務器到客戶端,客戶端不回答我的意見是錯誤的權利... –

+1

不,這是不可能的,據我所知。如果您丟失了互聯網連接,則不能向服務器發送任何消息。 ;) 雖然可以增加超時時間,但在大多數情況下,1-2秒都可以。 – RicoBrassers

+0

好吧,我現在使用這種方式:)只是要求它。我認爲有這樣一個方法:D :)但我們會看到..因爲信號強姦我的服務器,你知道:) –

相關問題