Socket.IO 房间
Socket.IO 房间
在命名空间中,我们还可以定义任何通道,socket可以加入和离开,这些通道被称为房间。房间用于进一步实现逻辑上的分离。
房间与名称空间一样共享相同的socket连接。
在使用房间时要记住的一件事是它们只能加入服务器端。
加入房间
你可以调用join方法去加入一个房间,要加入一个房间,您需要提供房间名称作为连接函数的参数。例如:socket.join("room name");
var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.sendfile('index.html'); }); var roomno = 1; io.on('connection', function(socket){ //Increase roomno 2 clients are present in a room. if(io.nsps['/'].adapter.rooms["room-"+roomno] && io.nsps['/'].adapter.rooms["room-"+roomno].length > 1) roomno++; socket.join("room-"+roomno); //Send this event to everyone in the room. io.sockets.in("room-"+roomno).emit('connectToRoom', "You are in room no. "+roomno); }) http.listen(3000, function(){ console.log('listening on localhost:3000'); });]
处理客户端上的这个connecttoroom事件。
<!DOCTYPE html> <html> <head><title>Hello world</title></head> <script src="/socket.io/socket.io.js"></script> <script> var socket = io(); socket.on('connectToRoom',function(data){ document.body.innerHTML = ''; document.write(data); }); </script>
现在,如果您连接3个客户端,前2个客户端将收到消息:
You are in room no. 1
下一个将得到消息:
You are in room no. 2
离开房间
要离开一个房间,您需要调用leave函数,就像在socket上调用join函数一样。例如,socket.leave("room name");
更多代码将在后续章节发布.