2012-09-21 47 views
1

這裏是我的客戶端應用程序,由PHP服務於不同服務器上的node.js + socket.io應用程序。它可以連接和接收從服務器發送的廣播。如果連接斷開,應用程序將回退到輪詢數據庫(使用setInterval())。它試圖每5輪投票重新連接一次,它可以成功重新連接並繼續接收消息。以前的失敗嘗試連接後,Socket.io事件不會觸發

我的問題發生在用戶加載頁面和節點服務器無法到達時(我關掉它進行測試),然後打開服務器並在第5次輪詢時,它成功連接到服務器,使用socket.socket.reconnect(); 。但是,只要服務器廣播消息,它就不會觸發事件。請注意,這不會發生在手機上測試(這回落到不同的插座方法)

我已經看到在這裏找到的問題Reconnection in socket.io problem in `socket.on('message',function(){})`,但是,套接字以前沒有連接,所以我不認爲這可能是會議?

編輯:我改變了socket.socket.reconnect()socket.socket.connect(),它解決了這個問題。如果有人能夠解釋爲什麼這個作品我想知道的原因。我知道它是因爲服務器實際上沒有重新連接,但希望獲得更多信息。

謝謝。

回答

1

你可能知道這個原因。服務器不重新連接。它實際上是連接。當你告訴socket.io重新連接時,它會搜索以前的連接句柄以及出現問題的地方。