多个连接,但单个 websocket.on("message") 事件发射器
Posted
技术标签:
【中文标题】多个连接,但单个 websocket.on("message") 事件发射器【英文标题】:Multiple connections, but single websocket.on("message") event emitter 【发布时间】:2016-02-16 20:48:32 【问题描述】:我有一个设备与 Einaros/ws WebSocket 服务器建立两个 WebSocket 连接。每当第二个 WebSocket 连接向服务器发送消息时,只有第一个 websocket.on("message") 事件发射器响应。无法区分消息来自哪个 WebSocket,因为似乎只有一个 websocket.on("message") 事件发射器对象。
如何在不从客户端传递 ID 的情况下区分从哪个 WebSocket 连接接收消息?
如果我忽略了一些简单的事情,我深表歉意,我是 node.js 和编码新手。从下面的代码看起来应该为每个 WebSocket 连接创建单独的事件发射器对象,以便服务器知道消息来自哪个连接。我的代码如下所示:
var connections = new Map();
var idCounter = 0;
wss.on("connection", function connection(ws)
var connectionID = idCounter++;
connections.set(connectionID, ws);
var session = connections.get(connectionID);
session.on("message", function incoming(message)
session.send(message);
--- 更新---
我进行了另一项测试。使用下面的代码,“objectTest”包含由打印到控制台的“sec-websocket-key”区分的唯一 WebSocket 连接。然而“this.send(message);”和“console.log(this);”两者都指第一个建立的 WebSocket 连接,即使“objectTestMap”包含第二个唯一的“objectTest”。
var connections = new Map();
var idCounter = 0;
wss.on("connection", function connection(ws)
var connectionID = idCounter++;
connections.set(connectionID, ws);
var session = connections.get(connectionID);
var sendThis = String(connectionID);
session.send(sendThis);
var objectTestMap = new Map();
var objectTest = session.on("message", function incoming(message)
this.send(message);
console.log(this);
);
objectTestMap.set(connectionID, objectTest);
console.log(objectTestMap.get(connectionID));
);
【问题讨论】:
【参考方案1】:这是我连接到服务器的客户端应用程序出错。 WS 没有问题,上面的代码可以正常工作。
【讨论】:
以上是关于多个连接,但单个 websocket.on("message") 事件发射器的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 gsutil 将多个 csv 文件连接成一个具有单个标题的 csv 文件