我正在使用 nodejs 构建一个 tcp 消息服务器。 它只是在我的服务器上等待接受来自 Arduino 的连接。
因为它在连接时用唯一 ID(不是 IP)标识自己,所以我可以在不知道客户端设备 IP 地址的情况下从服务器 > arduino 写入数据。
但为了提高效率,我希望尽可能长时间地打开连接,最好是在客户端设备 关闭连接时。 (例如关于 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)。
如果这不是解决问题的方法,那是什么?
最佳答案
最好的办法是定期发送自己的心跳消息。
此外,您不需要 soc.on('connect', ...)
,因为在执行该回调时客户端套接字已经连接。
关于node.js - 如何使用 node.js 保持 tcp 连接始终打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23061142/