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");
更多代码将在后续章节发布.