nodejs--socket.io的广播信息及用户分组

//经测试,只能在服务端发送广播,客户端不行!

socket.io广播是给所有人或者某一群组中的人发送信息。需要以下几步:

1.服务端创建分组

var io = require('socket.io').listen(app);
//连接事件
io.on('connection', function (socket) {
    //客户端分组
    socket.on('group1', function (data) {
            socket.join('group1');
    });
    socket.on('group2',function(data){
            socket.join('group2');
    });
    ......
}

2.用户端加入分组

socket.emit('group1'); //加入在服务器已经创建的分组。一个客户端可以存在多个分组(订阅模式)

3.服务端发送广播(四种范围)

//和创建分组在同一位置
//给除了自己以外的客户端广播消息
socket.broadcast.emit("broad",{data:"hello,allout"}); 
//给所有客户端广播消息
io.sockets.emit("broad",{data:"hello,all"});
//对分组中的用户发送数据
//不包括自己
socket.broadcast.to('group2').emit('broad', {data:"hello,myout"});
//包括自己
io.sockets.in('group1').emit('broad', {data:"hello,myin"});

4.用户端接收广播数据

// 创建websocket连接
var socket = io('ws://localhost:3000');
......
socket.on('broad', function (data) {   //接收服务端发送的数据
	//接收本分组的,且广播名为broad的广播,即服务端emit所定义的
        //接收到date数据在客户端处理
});
新加评论 评论标题:

1.服务端创建分组
2.用户端加入分组
3.服务端发送广播(四种范围)
4.用户端接收广播数据