Socket.io允许您使用脉动信号“检查Socket.IO连接的运行状况”。心跳到底是什么?为什么我不应该使用它们?

最佳答案

心跳是一种小消息,它定期从客户端发送到服务器(或从服务器发送到客户端再返回到服务器),以确认客户端仍在 Activity 中。

例如,如果您有一个为聊天室提供服务的Node.js应用程序,并且用户长时间没有说话,则无法判断他们是否仍然保持联系。通过以预定的时间间隔(例如,每15秒)发送一次声音,客户端将通知服务器它仍在那儿。如果已经自从服务器获得客户端的心跳信号以来的20秒,它很可能已断开连接。

这是必需的,因为您cannot be guaranteed a clean connection termination over TCP-如果客户端崩溃或发生其他情况,您将不会收到来自客户端的终止数据包,并且服务器将不知道客户端已断开连接。此外,Socket.IO支持各种其他机制(TCP套接字除外)来传输数据,在这种情况下,客户端不会(或无法)向服务器发送终止消息。

默认情况下,Socket.IO客户端将每15秒向服务器发送一次心跳(心跳间隔),如果服务器在20秒内未收到客户端的消息(心跳超时),它将视为客户端断开连接。

我想不出许多您可能不想使用心跳的普通用例。

07-24 09:44
查看更多