2012-12-13 111 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,这是很容易的(处理令牌和事件)。