3

正如问题所说,socket.io 中的关闭超时和心跳间隔参数有什么区别

我在 socket.io 的 github 页面中读到了它们

https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

但是,在我手动配置它们的情况下,不能完全理解它们之间的关系以及两者的值是否应该相同。

关于这个主题的更多材料我来了--------

https://groups.google.com/forum/?fromgroups#!topic/socket_io/2hn52Udb-3A

使用 socketio 心跳的优点/缺点

每个客户端心跳都会触发 Socket.io“连接”事件?

在 socket.io 上设置高关闭超时是否安全?

4

1 回答 1

9

文档确实不是很清楚。

据我了解(也在查看代码):

  • close timeout当客户端或服务器关闭连接时设置一种“宽限期”:它不会立即关闭它,而是首先等待close timeout几秒钟;如果在这段时间内,客户端决定重新连接、发送数据或从服务器接收数据,则连接将被重用(并且超时将被清除)。否则,当超时后什么都没有发生时,连接才真正关闭;
  • heartbeat timeout:如果在这么多秒后,客户端没有响应来自服务器的心跳消息,服务器将认为连接丢失(或客户端无响应)并关闭它;
  • heartbeat interval:这设置心跳消息之间的间隔(由服务器用于检查客户端是否仍然连接);默认情况下,它每 25 秒发送一条消息;

close timeoutheartbeat timeout没有真正相关,我认为它们不必具有相同的价值。

编辑:至于close timeoutheartbeat interval,我不确定。心跳消息可能会取消关闭超时,但确实如此,设置的默认值socket.io(分别为 25 和 60 秒)没有多大意义。

编辑#2:heartbeat-messages 似乎没有取消关闭超时,所以它们是不相关的。

于 2013-05-29T10:26:14.587 回答