如何保持一个tcp连接总是打开node.js

我正在构build一个带有nodejs的tcp消息服务器。 它只是坐在我的服务器等待接受连接从让我们说一个Arduino。

因为它在连接时识别出一个唯一的ID(不是IP),所以我可以在不知道客户端设备的IP地址的情况下从服务器arduino中写入数据。

但为了高效,我希望连接尽可能长,最好只要客户端设备closures连接。 (例如,在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)中,或者在callback(2)中。

如果这不是办法,那是什么?

你最好的select是定期发送你自己的心跳消息。

此外,您不需要soc.on('connect', ...)因为执行callback时客户端套接字已经连接。