我有一个简单的 p2p 应用程序,但是当我作为另一个对等点或客户端连接并退出时,服务器完全停止。我已经研究过
connection.setKeepAlive
,但它并没有像我想象的那样工作。我只是希望在另一个对等点退出时仍能保持与任何其他对等点的连接。
const net = require('net')
const port = 3000
const host = 'localhost'
const server = net.createServer((connection) => {
console.log('peer connected')
})
server.listen(port, () => {
console.log('listening for peers')
})
const client = net.createConnection(port, host, () => {
console.log('connected to peer')
})
在您的脚本中,服务器侦听的端口与您用于客户端连接的端口相同,因此应用程序正在调用自身。
这是一个连接到其对等点并每 2 秒断开连接的脚本:
const net = require('net')
const myPort = 3001
const peerPort = 3002
const host = 'localhost'
const server = net.createServer((connection) => {
console.log('peer connected')
})
server.listen(myPort, () => {
console.log('listening for peers')
})
let connectionTest = function() {
const client = net.createConnection(peerPort, host, () => {
console.log('connected to peer')
});
client.on('close', (err) => {
console.log("connection closed");
});
client.on('error', (err) => {
console.log("error");
});
//TODO do stuff
client.end();
setTimeout(connectionTest, 2000);
}
setTimeout(connectionTest, 3000);
对于每个实例,您应该更改端口(myPort 和peerPort)
只需定义
socket.on('error', (error) => {//...})
侦听器来处理客户端连接断开。