
- 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);
廣告