我试图使用openshift创建一个用于消息传递和广播的节点websocket。下面是我的代码。
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');
}
但只有发送消息的客户端才能收到消息。
如何让所有客户端都能得到消息?每个客户端是否创建单独的会话?如何在这里使用红色?
任何快速的帮助表示赞赏。
谢谢。
尝试
wss.broadcast = function(data) {
for(var i in wss.clients) {
console.log(wss.clients[i]);
wss.clients[i].send(data);
}
};
使用 WSS 进行广播