Socket.io问题分析

广播数据

如何向所有的客户端广播数据?

  1. 使用io.sockets.emit
1
2
3
4
5
6
7
...

var io = require('socket.io')(server);
io.on('connection', function(socket){
io.sockets.emit('new', {hello: 'world'});
});

  1. 使用socket.broadcast.emit
1
2
3
4
5
6
7
...

var io = require('socket.io')(server);
io.on('connection', function(socket){
socket.broadcast.emit('new', {hello: 'world'});
});

两种方式区别io.sockets.emit向所有连接的客户端广播数据,而socket.broadcast.emit则向
除了该socket自身之外的其他所有广播数据。其实也就是说
io.sockets.emit = socket.broadcast.emit + socket.emit

因此可以猜测出socket.io内部会保留所有连接的socket。