如何使用node.js始终打开tcp连接

时间:2014-04-14 13:16:30

标签: node.js sockets tcp

我正在使用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)中。

如果不是这样做的话,那是什么?

1 个答案:

答案 0 :(得分:4)

您最好的选择是定期发送自己的心跳信息。

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