繁体   English   中英

Socket.io 与flask-socketio python。 如何设置套接字保持活动/超时

[英]Socket.io with flask-socketio python. How to set socket keepalive/timeout

我正在努力寻找有关 socket.io 超时值的任何文档。 我在客户端使用 //cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js 在服务器端使用 Flask-SocketIO。

这是我创建套接字的方式:

namespace = '/coregrapher'

var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);

socket.on('connect', function() {
    socket.emit('my event', {data: 'I\'m connected!'});
});

socket.on('my response', function(msg) {
    $('#result').append(msg.data);
});

问题是,如果服务器甚至一分钟都没有向客户端或 Visaversa 发送任何内容,则客户端会断开连接,如果服务器尝试向客户端再次发送,则会失败,因为客户端已经断开连接。 如何让客户端保持连接?

谢谢!

您还可以使用 Flask-SocketIO 在服务器端设置参数:

socketio = SocketIO(ping_timeout=10, ping_interval=5)

:param ping_timeout: The time in seconds that the client waits for the
                     server to respond before disconnecting. The default is
                     60 seconds.
:param ping_interval: The interval in seconds at which the client pings
                      the server. The default is 25 seconds.

大问题是,如果您的服务器在一段时间内对保持活动的数据包没有响应,客户端将断开连接并尝试重新连接。 如果它无法重新连接,最终它将停止尝试。

也就是说,如果您想修改重试逻辑的配置,那么您可以将选项对象作为第二个参数发送到您的.connect()调用。 根据此处的文档,可以控制以下选项:

选项:

  • reconnection 是否自动重连(true)
  • reconnectionDelay 在尝试新的重新连接之前等待多长时间 (1000)
  • reconnectionDelayMax 重新连接之间等待的最长时间 (5000)。 每次尝试都会按 reconnectionDelay 指定的数量增加重新连接。
  • 发出 connect_error 和 connect_timeout 事件之前的超时连接超时(20000)

因此,如果您希望它在更长的时间内继续尝试自动重新连接,您可以增加最后三个选项的时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM