/**/

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>

现在,如果您连接三个客户端,则前两个将获得以下消息:

无涯教程网

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

来源:LearnFk无涯教程网

You are in room no. 1

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

You are in room no. 2
Rooms

离开房间

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

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

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

这一章《Socket.IO - 聊天室(Root)》你学到了什么?在下面做个笔记吧!做站不易,你的分享是对我们最大的支持

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

猜你喜欢

Node.js开发实战 -〔杨浩〕

现代C++编程实战 -〔吴咏炜〕

Kafka核心源码解读 -〔胡夕〕

Web漏洞挖掘实战 -〔王昊天〕

带有 Z 缓冲区和透明度的 JavaFX 19 3D 不起作用

如何使用信号量来控制2个线程的进度?

Rails 7 共享刺激控制器功能

如何为导入的嵌入式 struct 文字提供值?

R:在组内创建元素组合并在新数据框中添加与组合相关的数字

如果列不存在并出现 KeyError: "['Column'] not in index" 在 df.to_csv 中写入“null”?