Javascript 通过forEach函数-Nodejs侦听多个websocket端口

Javascript 通过forEach函数-Nodejs侦听多个websocket端口,javascript,node.js,websocket,Javascript,Node.js,Websocket,我正在创建websocket服务器以侦听多个端口,60001-60020中的每个端口一个。 我正在使用下面的设置将来自websocket的数据通过管道传输到命名管道 ports.forEach(function(port) { s = https.createServer(serveropt, app); s.listen(port); servers.push(s); wss = new WebSocketServer({

我正在创建websocket服务器以侦听多个端口,60001-60020中的每个端口一个。 我正在使用下面的设置将来自websocket的数据通过管道传输到命名管道

    ports.forEach(function(port) {
        s = https.createServer(serveropt, app);
        s.listen(port);
        servers.push(s);
        wss = new WebSocketServer({server: s});
        wsservers.push(wss);
        var streamId = port - 60000;
        wstream = fs.createWriteStream('./../scripts/tmp/nodeToFfmpegPipe' + streamId);
        wstreams.push(wstream);
    });
    
    wsservers.forEach(function(wss) {
        wss.on('connection', (ws, req) => {
            streamId = req.socket.localPort - 60000;
            ws.on('message', (msg) => {
                console.log('DATA', msg);
                wstreams[streamId - 1].write(msg);
        });
    });
});
只要一个插座打开,它就可以正常工作。但当多个插座打开时,插座开始关闭。 相反,如果我为wsservers数组中的每个项创建多个函数,那么它可以与多个套接字配合使用。例如

wsservers[0].on('connection', (ws, req) => {
        var streamId = req.socket.localPort - 60000;
        wstream1 = fs.createWriteStream('/usr/local/nginx/scripts/tmp/nodeToFfmpegPipe' + streamId);
        ws.on('message', (msg) => {
            wstream1.write(msg);
        });
});
知道我在forEach函数中做错了什么吗