Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Socket.io 回退到轮询后强制升级?_Socket.io - Fatal编程技术网

Socket.io 回退到轮询后强制升级?

Socket.io 回退到轮询后强制升级?,socket.io,Socket.io,这可能是一个愚蠢的问题,但我想知道是否有办法强制socket.io定期重试使用websocket作为传输而不是轮询 我注意到有时我的应用程序无法建立websocket连接(握手失败:ERR\u connection\u RESET)。io正确地返回轮询,但它似乎从未尝试再次切换回WebSocket,即使它可以工作。我的观察正确吗? 如果是,你有什么建议 如果您需要任何代码,请告诉我。我真的想不出一个相关的代码示例,因为这更像是一个理论问题 io正确地返回轮询,但它似乎从未尝试再次切换回WebSo

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

我注意到有时我的应用程序无法建立websocket连接(握手失败:ERR\u connection\u RESET)。io正确地返回轮询,但它似乎从未尝试再次切换回WebSocket,即使它可以工作。我的观察正确吗? 如果是,你有什么建议

如果您需要任何代码,请告诉我。我真的想不出一个相关的代码示例,因为这更像是一个理论问题

io正确地返回轮询,但它似乎从未尝试再次切换回WebSocket,即使它可以工作。我的观察正确吗

是的,没错

如果是,你有什么建议

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

这是我们客户端的一个例子,希望对挖掘有所帮助

    //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();
    };

好吧非常感谢。我只是想确认我的工作就是跟踪这件事。将尽快接受。我要说的是修复您的服务器以不拒绝连接。或者,如果您处于轮询模式,您可以每隔一段时间断开连接并重新连接客户端,客户端将自动再次尝试webSocket。是的。这只是一个理解情况的例子。显然,我不希望握手一开始就失败。谢谢你的评论!我的观点是,偶尔的错误连接重置可能不仅仅针对webSocket连接。这可能只是web服务器健康状况不佳的一个迹象。如果这是您的服务器,您的首要任务应该是使您的服务器健康,这样就不会发生这种情况,而不是尝试使用客户端代码来解决它。是的。这就是这个问题产生的原因。我们的服务器非常不稳定,因此初始握手10次失败1次。我们正在分别调查这些服务器问题,但这并不是问题的一部分。无论如何,谢谢你的关心。