//经测试,只能在服务端发送广播,客户端不行!
socket.io广播是给所有人或者某一群组中的人发送信息。需要以下几步:
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'); }); ...... }
socket.emit('group1'); //加入在服务器已经创建的分组。一个客户端可以存在多个分组(订阅模式)
//和创建分组在同一位置 //给除了自己以外的客户端广播消息 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"});
// 创建websocket连接 var socket = io('ws://localhost:3000'); ...... socket.on('broad', function (data) { //接收服务端发送的数据 //接收本分组的,且广播名为broad的广播,即服务端emit所定义的 //接收到date数据在客户端处理 });