CNode

请问nodejs的net模块创建的服务端如何发送心跳包?

问答
BBrotherPeng发布于12 年前最后回复12 年前5 回复7740 浏览0 收藏

创建的tcp服务器不知道和java一样有类似 socket.sendUrgentData(0xFF); // 发送心跳包 的方法啊?还是自己写定时器不停的socket.write(xx)?

查看回复

回复 (5)

M
MiguelValentine#1·12 年前

请从客户端发心跳包。然后服务器端反馈心跳包。 定时器太多损伤服务器端性能。

B
BrotherPeng#2·12 年前
引用 MiguelValentine请从客户端发心跳包。然后服务器端反馈心跳包。 定时器太多损伤服务器端性能。

@MiguelValentine 如果客户端发的话,那只是测试服务端状态,客户端如果掉线,服务端还是不能够知道这个连接不能用了吧?像上次说的那个问题,我多进程,客户端重连的话连接可能已经不在上次那个进程里面了,所以得清理掉啊,我socket放obj属性里面了,每个socket对应一个属性

B
BrotherPeng#4·12 年前
引用 MiguelValentine@BrotherPeng 服务器端用一个 2 5心跳间隔的回收计时器,进行回收。

@MiguelValentine 不太明白啊,隔2到5秒去用socket.write方法写入测试吗?

M
MiguelValentine#5·12 年前
引用 BrotherPeng@MiguelValentine 不太明白啊,隔2到5秒去用socket.write方法写入测试吗?

@BrotherPeng 对每个OBJ检测上次发送心跳的时间是否过期,过期就回收。 也可以设置时间久一点节约服务器资源。

参与回复
登录后即可参与回复。登录