gpt4 book ai didi

javascript - socket.io 了解何时达到最大重新连接尝试限制

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:15 26 4
gpt4 key购买 nike

我有一个 Node 套接字服务器和一个客户端连接。

如果套接字服务器短时间内出现故障,客户端无需我执行任何操作即可重新建立连接。但是,如果客户端长时间宕机,则客户端尝试重新连接之间的延迟会太长(每次重新连接失败,重新连接尝试之间的延迟会变得更长)。

为了解决这个问题,我想将“最大重新连接尝试”设置为一个较小的数字,如果它们已经耗尽,我想运行我自己的轮询代码。

我的问题是,我如何知道客户端何时达到最大重新连接尝试限制?

即使套接字尝试重新建立连接,

socket.on('disconnect') 也会被调用,并且实际上可能会成功,因此尝试调用我的其他连接的位置不正确代码。

这是我的客户端代码的一个小片段:

function start_socket(){
console.log("socket trying to connect");
socket = io.connect('http://someip/', { 'force new connection': true , 'max reconnection attempts' : 0});
console.log("...here");
socket.on('connect', function() {
console.log('connected to server');
set_loggedin_status('true');
});
socket.on('something', function(link) {
console.log("something: " + something);
openTabWithURL(something);
});
socket.on('disconnect', function() {
console.log('disconnected from server');
set_loggedin_status('false');
close_socket();
});
socket.on('error',function(){
console.log('socket error');
});
}

function do_my_own_polling(){
//some code here.
}

最佳答案

我认为您试图以错误的方式获得结果:如果我理解正确,您需要以固定的轮询延迟永远继续寻找服务器。

当发生最大重新连接尝试次数时(这需要额外的“元”源代码),您可以配置 socket.io 来执行此操作,而不是启动自己的轮询机制。特别是,您可以尝试使用以下选项(来自 https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO ):

  • 重新连接限制:允许您设置每次轮询/重新连接尝试之间的最大时间延迟。例如,将其设置为 3 秒,socket.io 将在 500ms(这是重新连接延迟的默认值)后进行第一次轮询,在 1s 后进行第二次轮询,在 2s 后进行第三次轮询,但第四次将在 3s 后而不是 4 秒后进行。以下尝试的时间间隔将为 3s;
  • 最大重新连接尝试次数:这设置了 socket.io 将进行的重新连接尝试次数:如果您希望 socket.io 永远尝试,请将其设置为“无限”。

因此,以下内容将起作用:

socket = io.connect('http://someip/', {'reconnection limit' : 1000, 'max reconnection attempts' : 'Infinity'});

关于javascript - socket.io 了解何时达到最大重新连接尝试限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22758013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com