socket.io中关闭超时和心跳间隔有什么区别

时间:2013-05-28 20:07:57

标签: javascript node.js socket.io

问题是说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

Advantage/disadvantage of using socketio heartbeats

Socket.io "connection" event fired on every client heartbeat?

Is it safe to set a high close timeout on socket.io?

1 个答案:

答案 0 :(得分:8)

文件确实不是很清楚。

据我所知(也在查看代码):

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

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

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

编辑#2 :心跳消息似乎不会取消关闭超时,因此它们是无关的。