我正在使用Nodejs的原生net
模块来建立与硬件设备通过局域网的Socket连接。
我已经实现了一些事件处理程序,例如,我正在监听data
事件,一切都按预期运行!
const net = require('net');
let reader = new net.Socket();
reader.connect(READER_PORT, READER_IP);
// Some event handlers, working perfectly fine...
reader.on('data', (data) => {
// Process the data
});
reader.on('close', (error) => {
// Reconnect here
});
然而,如果我在5-10分钟内不使用该连接(即处于空闲状态),它会自动关闭,并发出以下错误的close
事件:
read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:208:20) {
errno: 'ECONNRESET',
code: 'ECONNRESET',
syscall: 'read'
}
当我收到 close
或 error
事件时,我希望重新建立连接。
我尝试使用与我在捕获这些事件时最初使用的相同的 reader.connect()
方法。但是,在这之后,我没有从套接字接收任何数据,也就是说,永远不会调用 data
处理程序。
在这种情况下重新连接到套接字的正确方法是什么?