Socket.io 0.7无法调用broadcast.send?

时间:2011-08-09 09:01:32

标签: node.js socket.io

在socket.io 0.6中,我有以下示例代码:

var io = require('/usr/lib/node_modules/socket.io');
var server = http.createServer(function(req,res){
      var path = url.parse(req.url).pathname;
      switch( path ){
           ....
           //core codes
           socket.broadcast(data);
      }
}).listen(8080);

// ... ...

var socket = io.listen(server);

一切正常。

但现在我已将socket.io更新为0.7并将socket.broadcast更改为socket.sockets.broadcast.send(data);

有例外:无法调用'undefined'的发送?

谁能告诉我如何在不收听特定事件的情况下向所有人发送数据?

也许这是一种方式:

clients = new Array();
socket.on('connection',function(socket){ clients.push(socket);}
// ...
for(s in clients) s.send(data);
// ...

真的需要这样做吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

在socket.io 0.7中你可以:

io.sockets.send() // broadcasts to all connected users
io.sockets.json.send() // broadcasts JSON to all connected users
io.sockets.emit('eventname') // broadcasts and emit

或命名空间

io.of('/namespace').send('msg'); // broadcast to all connect users in /namespace

答案 1 :(得分:0)

你可以做到

var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
  socket.broadcast.emit('user connected');
});

答案 2 :(得分:0)

使用

sioServer.sockets.on('connection', function (client) {
    client.broadcast.send('Hello, Everybody else!');
});

向所有其他连接的客户端(除广播client之外)广播并使用

sioServer.sockets.on('connection', function (client) {
    sioServer.sockets.send('Hello, Everybody!');
});

向所有人(包括client他自己)广播。