javascript - 通过 forEach 函数监听多个 websocket 端口 - Nodejs
问题描述
我正在创建 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 函数中做错了什么吗?
解决方案
推荐阅读
- r - 不确定如何修复“数值表达式有 41 个元素:仅第一次使用”警告
- kubernetes - kubernetes:带有节点端口的负载均衡器服务
- java - java.lang.IllegalArgumentException:重复的服务器名称类型 0
- php - 将自定义日期范围字段添加到 WooCommerce Admin 单个产品
- jmeter - Jmeter 5.4 - 线程 Thread[AWT-EventQueue-0,6,main] 中的 java.lang.NullPointerException
- python - 在 Django 的一个地方从多个模型中获取 N 个最近的对象
- backup - 在 Nas Synology 上监控 HyperBackup、XOA 备份
- php - Sql如何使用位置参数限制查询?
- sql - 在 Oracle 中通过 SQL 查询更改 JSON 层次结构
- postgresql - Delete .. from .. join,postgresql 和 oracle 的语法相同