jhc*_*hen 37 websocket node.js socket.io
Socket.io允许您使用心跳"检查Socket.IO连接的健康状况".究竟什么是心跳,为什么我应该或不应该使用它们?
Mic*_*ley 53
心跳是从客户端发送到服务器(或从服务器到客户端并返回到服务器)的小消息,以定期确认客户端仍处于活动状态.
例如,如果您有一个服务于聊天室的Node.js应用程序,并且用户在几分钟内没有说出任何内容,则无法判断它们是否真的仍然连接.通过以预定间隔(例如,每15秒)发送一次听力,客户端通知服务器它仍然存在.如果自服务器从客户端获得心跳以来已经过了20秒,则可能已断开连接.
这是必要的,因为无法保证通过TCP终止连接 - 如果客户端崩溃,或者其他事情发生,您将不会从客户端收到终止数据包,并且服务器将不知道客户端已断开连接.此外,Socket.IO支持各种其他机制(TCP套接字除外)来传输数据,在这些情况下,客户端不会(或不能)向服务器发送终止消息.
默认情况下,Socket.IO客户端每隔15秒(心跳间隔)向服务器发送心跳,如果服务器在20秒内没有从客户端收到(心跳超时),则会认为客户端已断开连接.
我想不出很多你可能不想使用心跳的平均用例.