使用socketio心跳的优点/缺点

Socket.io允许您使用检测信号“检查Socket.IO连接的健康状况”。 什么是心跳,为什么要或不应该使用它们?

检测信号是指定期从客户端发送到服务器(或从服务器到客户端并返回到服务器)的小消息,以确认客户端仍处于活动状态。

例如,如果您有一个Node.js应用程序用于聊天室,并且用户在很长时间内不会说任何内容,则无法确定它们是否真的连接在一起。 通过以预定间隔(例如,每15秒)发送一次听力,客户端通知服务器它仍然在那里。 如果服务器从客户端获得心跳后,例如20秒,则很可能已经断开连接。

这是必要的,因为不能保证通过TCP的干净连接终止 -如果客户端崩溃或发生其他事情,则不会从客户端收到终止数据包,并且服务器不会知道客户端已断开连接。 此外,Socket.IO支持各种其他机制(TCP套接字除外)传输数据,在这种情况下,客户端不会(或不能)向服务器发送终止消息。

默认情况下,一个Socket.IO客户端会每隔15秒向服务器发送一个心跳( 心跳间隔 ),如果服务器在20秒内没有听到客户端的请求( 心跳超时 ),则认为客户端断开连接。

我不能想到许多你可能不想使用心跳的平均用例。