请问nodejs的net模块创建的服务端如何发送心跳包?
创建的tcp服务器不知道和java一样有类似 socket.sendUrgentData(0xFF); // 发送心跳包 的方法啊?还是自己写定时器不停的socket.write(xx)?
5 回复
请从客户端发心跳包。然后服务器端反馈心跳包。 定时器太多损伤服务器端性能。
@MiguelValentine 如果客户端发的话,那只是测试服务端状态,客户端如果掉线,服务端还是不能够知道这个连接不能用了吧?像上次说的那个问题,我多进程,客户端重连的话连接可能已经不在上次那个进程里面了,所以得清理掉啊,我socket放obj属性里面了,每个socket对应一个属性
@BrotherPeng 服务器端用一个 2-5心跳间隔的回收计时器,进行回收。
@MiguelValentine 不太明白啊,隔2到5秒去用socket.write方法写入测试吗?
@BrotherPeng 对每个OBJ检测上次发送心跳的时间是否过期,过期就回收。 也可以设置时间久一点节约服务器资源。