【发布时间】:2018-01-09 08:11:48
【问题描述】:
我有一个简单的 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')
})
【问题讨论】:
-
Keepalive 并没有像你想象的那样做。
-
当一个对等方断开连接时,这不应该影响与任何其他对等方的连接,并且您显示的代码中没有任何内容会导致这种情况。因此,尚不清楚您实际上要解决什么问题。从 node.js 的角度来看,只要您有任何打开的 TCP 连接或任何侦听服务器,node.js 进程就会保持活动状态。因此,只要您的服务器仍在侦听并处于活动状态,无论您拥有的客户端连接发生什么情况,您的 node.js 进程都会继续运行(而不是退出)。如果您认为自己的经历与此相反,那么我们需要更多细节。
-
为了测试这一点,我运行此代码,然后从另一个脚本运行常规客户端,它可以正常连接到它,但是当我退出客户端时,节点也会停止。