Node.js表示websocket不会广播给所有连接的客户端
我试图创build一个节点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'); }
但只有发送的客户端才能得到消息。
如何让所有的客户得到消息? 每个客户是否创build单独的会话? 如何在这里使用redis?
任何快速帮助赞赏。
谢谢。
尝试
wss.broadcast = function(data) { for(var i in wss.clients) { console.log(wss.clients[i]); wss.clients[i].send(data); } };
与wss广播