Javascript 通过forEach函数-Nodejs侦听多个websocket端口
我正在创建websocket服务器以侦听多个端口,60001-60020中的每个端口一个。 我正在使用下面的设置将来自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({
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函数中做错了什么吗