2012-12-13 144 views
0

我正在研究基於Backbone的應用程序(它也是一個平板電腦應用程序),它使用websocket,。 Websockets運行良好,但應用程序沒有任何錯誤/網絡處理的邏輯。websocket錯誤/網絡管理

應用程序應該向用戶顯示他已斷開連接的消息,並且應用程序應該再次嘗試重新連接,並且一旦連接回來,事情就會再次開始工作,如gmail。

我沒有寫任何服務器端websocket代碼,我是Websockets的新手。
有沒有關於如何處理網絡斷開,重新連接Websockets的任何好的文章?
我無法找到如何設置Websockets超時,或如何重新連接等。

作爲一款平板電腦應用程序,所以會有頻繁的網絡斷開,也應用程序將進入睡眠模式。有沒有特別的考慮或做法?

回答

0

this article,你可以使用try/catch來處理錯誤的情況下,如不能夠連接:

function connect(){ 
    try{ 
    var socket; 
    var host = "ws://localhost:8000/socket/server/startDaemon.php"; 
    var socket = new WebSocket(host); 
     message('<p class="event">Socket Status: '+socket.readyState); 
     socket.onopen = function(){ 
      message('<p class="event">Socket Status: '+socket.readyState+' (open)'); 
     } 
     socket.onmessage = function(msg){ 
      message('<p class="message">Received: '+msg.data); 
     } 
     socket.onclose = function(){ 
      message('<p class="event">Socket Status: '+socket.readyState+' (Closed)'); 
     } 
    } catch(exception){ 
     message('<p>Error'+exception); 
    } 
} 

我無法找到設置超時時間的任何提及,即使在WebSocket的規範,那可能是不可能的。

+0

我知道它,但連接到Socket後,網絡斷開連接怎麼辦? – Nachiket

0

嘗試一下本作從睡眠模式的移動設備( 把這裏重新webcocket連接)檢測喚醒

window.addEventListener("pageshow", function(){ 

//放在這裏//你的代碼

}

},false);

如果你做遊戲,你需要趕上關於球員斷開INFO從websocketServer

(每臺服務器可以做到這一點)
如果你想使用JavaWebSocket,這是很容易的(處理令牌和事件)。