回退到投票后强制升级?

时间:2017-06-26 19:50:58

标签: socket.io

这可能是一个愚蠢的问题,但我想知道是否有办法强制socket.io定期重试使用websocket作为传输而不是轮询?

我注意到有时我的应用程序无法建立websocket连接(Handshake failed:ERR_CONNECTION_RESET)。 Socket.io然后正确地回退到轮询,但它似乎永远不会尝试再次切换回websockets,即使它可以工作。我的观察是否正确? 如果是这样,你会建议什么?

如果您需要任何代码,请与我们联系。我无法真正想到相关的代码示例,因为这更像是一个理论问题。

1 个答案:

答案 0 :(得分:0)

  

Socket.io正确地回退到轮询,但它似乎永远不会尝试再次切换回websockets,即使它可以工作。我的观察是否正确?

是的,没错。

  

如果是这样,你会建议什么?

我不认为它是一个lib的工作,试图重新建立连接。您可以设置自己的侦听器,检查服务器可用性 - 有时服务器崩溃,用户不会注意到他们不再有连接......

有点客户方面的例子,希望它有助于挖掘。

    //If sockets close
    window.ws.onclose = function (e) {

        ws.onclose = null;
        ws.onerror = null;
        ws.onopen = null;
        // restart sockets in: 3000 ms 
        setTimeout(function () { ctx.createWS(); }, 3000); 
    };

    window.ws.onerror = function (error) {
        //On error we will try to restart sockets in function described before
        ws.close();
    };