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

标签 node.js sockets tcp

我正在使用 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/

相关文章:

tcp - 打开和关闭 TCP 连接的过程

node.js - Mongodb 时间戳非常不准确 - mongoose

node.js - Mongoose 请求未被其他文档引用的文档

javascript - 无法从React应用程序中的redux库导入商店

python - 使用给定的 TTL 伪造数据包 UDP

java - 如何在 Java 中使用 ICMP 和跟踪路由

java - 创建 ObjectInputStream 对象时程序停止

node.js - 检查用户在套接字连接中使用哪种浏览器类型

c - 我应该在 select() EBADF 上断言失败吗?

linux - 如何永久更改 MTU 设置