多人在线,必看,看了这么多天,分享一下我的心得。
发布于 1 天前 作者 hwx5400145 227 次浏览 来自 分享

服务端代码: console.log(‘a user connected:’+socket.id);//自动生成的id

socket.join(“game1”);//socket.leave(‘some room’);//加入/离开房间 io.in(“game1”).emit(‘login’, {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj});//io.to(“game1”).emit (说明:to(不包括发送人) in(包括发送人)) socket.broadcast.emit(‘login’, {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj});//发送所有人,但不包括发送人

socket.emit(‘login’, {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj});//给当前发送信息。 for(var a in onlinSocketUsers){ console.log(a+"==="+onlinSocketUsers[a]); onlinSocketUsers[a].emit(‘login’, {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj});//给当前发送信息。 }

socket.broadcast.to(‘my room’).emit(‘event_name’, data);//发送到房间名为my room的信息,不包括发送人 socket.broadcast.in(‘my room’).emit(‘event_name’, data);//发送到房间名为my room的信息,包括发送人(测试结果,也是不包括发送人)

var clients_in_the_room = io.sockets.adapter.rooms[“game1”]; console.log(clients_in_the_room.length);//房间名为game1的连接数 for (var clientId in clients_in_the_room ) { if(clientId==“sockets”){ var b=clients_in_the_room[clientId]; for(var a in b){ console.log(a+":"+b[a]); //输出:#1gscCYt0VKNLf0E5AAAA:true io.sockets.connected[a].emit(‘login’, {onlineUsers:onlineUsers, onlineCount:onlineCount, user:obj});//或者 io.to(a).emit } } }

var allrooms = io.sockets.adapter.rooms;//获取所有房间,也包含大厅的socket.id即下面的a for (var a in allrooms ) { var clients_in_the_room=allrooms[a]; //同上

}

客户端代码: this.socket.on(‘disconnect’, function(o){ alert(“disconnect”);//可以知道是否已断开连接 }); this.socket.on(‘reconnect’, function(o){ alert(“reconnect成功重连”);//成功重连 });

回到顶部