簡體   English   中英

Node.js Express WebSocket不會廣播到所有連接的客戶端

[英]Node.js express websocket not broadcasting to all connected clients

我正在嘗試創建一個節點websocket以使用openshift進行消息傳遞和廣播。 下面是我的代碼。

var WebSocketServer = require('ws').Server;
var http = require('http');
var ipaddr  = opneshift_ip;
var port    = openshift_port;
var server = http.createServer();
var wss = new WebSocketServer({server: server, path: '/connectserv'});

wss.broadcast = function(data) {
    for(var i in this.clients) {
        console.log(this.clients[i]);
        this.clients[i].send(data);
    }
};

wss.on('connection', function(ws) {
    console.log('a client connected'); 
    ws.on('message', function(data) {
        console.log('>>> ' + data); 
        ws.send('got '+data);
        if (data == 'broadcst') { 
            console.log('broadcst'); 
            wss.broadcast('Hi All'); 
        }
    });
    ws.on('close', function() {
      console.log('Connection closed!');
    });
    ws.on('error', function(e) {
      console.log(e);
    });
});

console.log('Listening at IP ' + ipaddr +' on port '+port);
server.listen(port,ipaddr);    

當有任何客戶端連接時,控制台將寫入“已連接的客戶端”。 當任何客戶端發送消息時,控制台都會寫入“ >>>消息”,並且即時消息也將在客戶端獲得相同的消息(“獲得消息”)

但是,當連接了多個客戶端時,如果我想向所有連接的客戶端廣播消息,則將“ broadcst”作為消息發送。 比進入

    if (data == 'broadcst') { 
        console.log('broadcst'); 
        wss.broadcast('Hi All'); 
    }

但是只有發送的客戶端才能收到消息。

如何使所有客戶都收到消息? 每個客戶是否創建單獨的會話? 如何在這里使用redis?

任何快速的幫助表示贊賞。

謝謝。

嘗試

wss.broadcast = function(data) {
  for(var i in wss.clients) {
    console.log(wss.clients[i]);
    wss.clients[i].send(data);
  }
};

用wss廣播

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM