- Socket.IO 教程
- Socket.IO - 主页
- Socket.IO - 概览
- Socket.IO - 环境
- Socket.IO - Hello World
- Socket.IO - 事件处理
- Socket.IO - 广播
- Socket.IO - 命名空间
- Socket.IO - 会议室
- Socket.IO - 错误处理
- Socket.IO - 日志记录和调试
- Socket.IO - 内部机制
- Socket.IO - 聊天应用
- Socket.IO 有用资源
- Socket.IO - 快速指南
- Socket.IO - 有用资源
- Socket.IO - 讨论
Socket.IO - 会议室
在每个命名空间内,你还可以定义插座可以加入和离开的任意通道。这些通道称为会议室。会议室用于进一步隔离关注点。会议室也像命名空间一样共享相同的插座连接。使用会议室时需要牢记的一件事是它们只能在服务器端加入。
加入会议室
你可以调用插座上的 join 方法,使插座订阅给定的通道/会议室。例如,让我们创建名为 'room-<room-number>' 的会议室并使一些客户端加入。此会议室满员后,再创建一个会议室并使客户端加入到该会议室。
注意 - 我们目前在默认命名空间,即“/”。你也可以使用相同的方式在自定义命名空间中实现这一点。
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){ 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> <body></body> </html>
现在如果你连接三个客户端,前两个将收到以下消息 -
You are in room no. 1
离开会议室
要离开会议室,你需要像在插座上调用 join 函数一样调用 leave 函数。
例如 - 要离开会议室 room-1,
socket.leave("room-"+roomno);
广告