📜  Socket.IO-客房

📅  最后修改于: 2020-11-02 04:54:11             🧑  作者: Mango


在每个名称空间内,您还可以定义套接字可以加入和离开的任意通道。这些通道称为房间。房间用于进一步分离问题。房间还共享与名称空间相同的套接字连接。使用房间时要记住的一件事是它们只能在服务器端连接。

加盟室

您可以在套接字上调用join方法,以将套接字订阅到给定的通道/房间。例如,让我们创建一个名为“ room- ”的房间并加入一些客户。此会议室已满时,请创建另一个会议室并在那里加入客户。

注意-我们目前正在默认名称空间(即“ /”)上执行此操作。您还可以以相同的方式在自定义名称空间中实现此功能。

要加入会议室,您需要提供会议室名称作为加入函数调用的参数。

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事件。

Hello world
   
   
   
   
   

现在,如果您连接三个客户端,则前两个将获得以下消息:

You are in room no. 1

最后一个客户端将获得以下消息-

You are in room no. 2

房间数

离开房间

要离开房间,您需要像在套接字上调用join函数一样调用Leave函数。

例如-要离开房间“ room-1”

socket.leave("room-"+roomno);