roh*_*dev 3 timeout node.js socket.io
如果我设置pingTimeout: 3000
和pingInterval: 2000
; 如果同时有800个插座连接; 这会对服务器性能有任何问题或提供延迟吗?当socket.io文档说服务器将等待pingTimeout(ms)
断开套接字(如果它没有获得pong
数据包)(这意味着套接字空闲)时,我们的意思是什么.当我们说套接字空闲时会涉及哪些情况?这是否意味着如果用户在页面上处于活动状态但未点击任何内容,则表示套接字是否空闲?
socket.io使用活动方案(而不是被动方案)来检测socket.io连接何时因任何原因而断开连接或无法正常工作.
此活动方案涉及客户端ping
定期向服务器发送数据包并等待pong
从服务器返回的时间间隔.
从客户端来看,pingInterval
发送ping数据包的频率是pingTimeout
多少,并且在得出连接出现问题之前等待pong数据包从服务器返回的时间有多长,它应该丢弃连接然后尝试重新连接.
类似地,服务器期望每个ping
数据包到达pingInterval
,如果没有到达,则服务器将断定连接已经以某种方式死亡.
因此,您设置的时间越短pingInterval
,客户端从服务器发送ping
和接收pong
回来的频率就越高,同样,服务器ping
从客户端接收并发送回来的频率也越高pong
.
"空闲"socket.io连接仍在发送ping
和pong
消息.
如果同时有800个插座连接; 这会对服务器性能有任何问题或提供延迟
服务器可以处理多少个并发连接涉及很多变量,而您实际上并没有提供任何相关信息来了解您的特定情况.以下是确定它的一些事项:
通常,800个并发连接数量相对较少,如果整体数据使用率较低且配置以其他方式优化,许多安装可以处理这种情况.有一些服务器安装可以处理数千个同时连接.
当我们说套接字空闲时会涉及哪些情况?
我不确定你的意思是"什么情况".空闲的socket.io连接意味着没有消息在任何一个方向上流动.当连接空闲时,socket.io使用ping和pong数据包来"测试"连接,以确保它仍在工作.
这是否意味着如果用户在页面上处于活动状态但未点击任何内容,则表示套接字是否空闲?
当您的代码未在套接字上发送或接收任何内容时,套接字处于空闲状态.这可能与用户点击的内容有关,也可能没有.这完全取决于您的应用程序.例如,股票报价器应用程序可能每隔几秒就通过socket.io接收股票价格更新,并且即使最终用户从未点击网页中的任何内容,该连接也几乎永远不会闲置.