Node.js,客户端退出后如何保持服务器活着?

时间:2018-01-08 21:55:52

标签: node.js tcp p2p

我有一个简单的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')
})

1 个答案:

答案 0 :(得分:0)

在您的脚本中,服务器侦听的端口与您用于客户端连接的端口相同,因此应用程序正在调用自身。

这是一个连接到其对等体并且每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和ampPortPort)