我正在使用nodejs构建一个tcp-message服务器。 它只是在我的服务器上等待接受来自Arduino的连接。
因为它在连接时用一个唯一的ID(不是IP)标识自己,我能够从服务器写入数据> arduino不知道客户端设备的IP地址。
但为了提高效率,我希望连接尽可能长时间打开,最好只要 client-device 关闭连接。 (例如,在ip更改或其他事情上)
这是服务器的(相关部分):
var net = require('net'),
sockets = {};
var tcp = net.createServer(function(soc){
soc.setKeepAlive(true); //- 1
soc.on('connect', function(data){
soc.setKeepAlive(true); //- 2
});
soc.on('data', function(data) {
//- do stuff with the data, and after identification
// store in sockets{}
})
}).listen(1111);
soc.setKeepAlive(true)
是保持连接活动的正确方法吗?
如果是这样,那么适当的地方是什么?在连接事件(1)中,或在回调(2)中。
如果不是这样做的话,那是什么?
答案 0 :(得分:4)
您最好的选择是定期发送自己的心跳信息。
此外,您不需要soc.on('connect', ...)
,因为在执行回调时客户端套接字已经连接。