如何保持一个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时客户端套接字已经连接。