开发学院

您的位置:首页>教程>正文

教程正文

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

1502184044720070.jpg

离开房间

  要离开一个房间,您需要调用leave函数,就像在socket上调用join函数一样。例如,socket.leave("room name");

更多代码将在后续章节发布.