Socket.IO - 聊天室(Root)

Socket.IO - 聊天室(Root) 首页 / Socket.io入门教程 / Socket.IO - 聊天室(Root)

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

加入房间

您可以在Socket上调用join方法以将Socket订阅到给定的通道。例如,让我们创建一个名为"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) {
   
   //增加 roomno 2 个客户在一个房间里。
   if(io.nsps['/'].adapter.rooms["room-"+roomno] && io.nsps['/'].adapter.rooms["room-"+roomno].length > 1) roomno++;
   socket.join("room-"+roomno);

   //将此事件发送给房间中的每个人。
   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 Learnfk</title>
   </head>
   <script src="https://cdn.jsdelivr.net/npm/socket.io-client@2/dist/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

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

You are in room no. 2
Rooms

离开房间

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

如-要离开房间'room-1',

链接:https://www.learnfk.comhttps://www.learnfk.com/socket.io/socket.io-rooms.html

来源:LearnFk无涯教程网

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Java核心技术面试精讲 -〔杨晓峰〕

深入拆解Tomcat & Jetty -〔李号双〕

分布式技术原理与算法解析 -〔聂鹏程〕

Redis核心技术与实战 -〔蒋德钧〕

数据分析思维课 -〔郭炜〕

去无方向的信 -〔小麥〕

林外 · 专利写作第一课 -〔林外〕

计算机基础实战课 -〔彭东〕

AI大模型系统实战 -〔Tyler〕

好记忆不如烂笔头。留下您的足迹吧 :)