2016-02-16 92 views
0

我有一臺設備與Einaros/ws WebSocket服務器建立兩個WebSocket連接。每當第二個WebSocket連接向服務器發送消息時,只有第一個websocket.on(「message」)事件發送器會響應。沒有辦法區分消息來自哪個WebSocket,因爲似乎只有一個websocket.on(「消息」)事件發射器對象。多個連接,但單個websocket.on(「消息」)事件發射器

如何區分正在從哪個WebSocket連接接收消息而不從客戶端傳遞ID?

我很抱歉,如果我忽略了簡單的東西,我是一個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);」即使「objectTestMap」包含唯一的第二個「objectTest」,也是指第一個建立的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); 
    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)); 
}); 

回答

0

他們是我的客戶端應用程序連接到服務器時發生錯誤。 WS和上面的代碼沒有問題,因爲它應該。

相關問題