首页 > 其他分享 >无涯教程-Socket.IO - 命名空间

无涯教程-Socket.IO - 命名空间

时间:2024-01-27 22:32:03浏览次数:24  
标签:socket IO 无涯 名称 io 空间 客户端 Socket

Socket.IO允许您"Namespaces命名"Socket,这实际上意味着分配不同的端点。这是一项有用的函数,可通过在通信通道之间引入分隔来最大程度地减少资源(TCP连接)的数量,并同时在您的应用程序内分隔关注点。多个命名空间实际上共享同一WebSockets连接,从而为我们节省了服务器上的Socket端口。

命名空间是在服务器端创建的。但是,客户端通过向服务器发送请求来加入它们。

默认命名空间

根名称空间" /"是默认名称空间,如果客户端在连接服务器时未指定名称空间,则默认名称空间由客户端加入。使用Socket对象客户端到服务器的所有连接均使用默认名称空间。如-

var socket=io();

这会将客户端连接到默认名称空间,此名称空间连接上的所有事件将由服务器上的 io对象处理,前面的所有示例都利用默认名称空间与服务器进行通信并返回。

自定义命名空间

我们可以创建自己的自定义名称空间,要设置自定义名称空间,我们可以在服务器端调用" of"函数-

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 nsp = io.of('/my-namespace');
nsp.on('connection', function(socket) {
   console.log('someone connected');
   nsp.emit('hi', 'Hello everyone!');
});

http.listen(3000, function() {
   console.log('listening on localhost:3000');
});

现在,要将客户端连接到该名称空间,您需要提供名称空间作为 io构造函数调用的参数,以在客户端创建连接和Socket 对象 。

如,要连接到上述名称空间,请使用以下HTML-

<!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('/my-namespace');
      socket.on('hi',function(data) {
         document.body.innerHTML='';
         document.write(data);
      });
   </script>
   <body></body>
</html>

每当有人连接到该命名空间时,他们都会收到" hi"事件。

learnfk:TestSocket learnfk$ nodemon app.js

[nodemon] 2.0.4

[nodemon] to restart at any time, enter `rs`

[nodemon] watching path(s): *.*

[nodemon] watching extensions: js,mjs,json

[nodemon] starting `node app.js`

listening on localhost:3000

someone connected

express deprecated res.sendfile: Use res.sendFile instead app.js:6:8

someone connected

无涯教程-Socket.IO - 命名空间_socket.io

参考链接

https://www.learnfk.com/socket.io/socket.io-namespaces.html

标签:socket,IO,无涯,名称,io,空间,客户端,Socket
From: https://blog.51cto.com/u_14033984/9445755

相关文章

  • windows console prompt modification
    bysettingprompttobe$d$t@$p$_$g$Sinenvironmentvariables.referenceChangeyourDOS/Commandprompthttp://www.chami.com/tips/windows/020497W.htmlcmd-HowdoIchangethecommand-linepromptinWindows?-StackOverflowhttps://stackoverflow.c......
  • AndroidStudio 编辑xml布局文件卡死问题解决
    之前项目编写的都是正常,升级AndroidStudio后编辑布局文件就卡死,还以为是AndroidStudio文件。其实不然,我给整个项目增加了版权声明。所以全部跟新后,布局文件也增加了版权声明。估计AndroidStudio在解析布局文件时候因为有版权声明的原因导致卡死,所以删除版权声明就可以了。可以......
  • 详解'unicodeescape' codec can't decode bytes in position 16-17: malformed \N ch
    详解'unicodeescape'codeccan'tdecodebytesinposition16-17:malformed\Ncharacterescape在Python的字符串处理中,有时候可能会遇到如下错误信息:'unicodeescape'codeccan'tdecodebytesinposition16-17:malformed\Ncharacterescape。本篇文章将详细解释这个错......
  • 无涯教程-Socket.IO - 广播服务
    Broadcasting意味着向所有连接的客户端发送消息,我们可以将消息发送给所有连接的客户端,我们可以使用io.sockets.emit方法。注意-这将向所有连接的客户端ALL发出事件(该事件可能触发了此事件的Socket)。在此示例中,我们将向所有用户广播已连接客户端的数量。更新app.js文件......
  • Gin 应用多实例部署session问题、session参数与刷新
    目录一、GinSession存储的实现方案二、memstore:基于内存的实现2.1基本使用2.2关键参数三、使用redis:多实例部署3.1使用redis优势3.2基本使用四、信息安全的三个核心概念五、GinSession参数5.1参数介绍六、Session自动刷新一、GinSession存储的实现方案cookie:基于co......
  • 常用标准IO
    标准IO2024.1.27写文件设置FILE*fopen(constchar*pathname,constchar*mode)//打开文件返回值返回file指针,本质是结构体指针(赋值给FILE变量)//NULL函数使用pathname路径,mode模式moder可读r+可读可写w可写w+可读可写,新建文件a可写,追加a+......
  • 无涯教程-Socket.IO - 应用示例
    创建一个名为app.js的文件,然后输入以下代码来设置快速应用程序-varapp=require('express')();varhttp=require('http').Server(app);app.get('/',function(req,res){res.sendfile('index.html');});http.listen(3000,function(){conso......
  • jax框架为例:求hession矩阵时前后向模式的自动求导的性能差别
    注意:本文相关基础知识不介绍。给出代码:fromjaximportjacfwd,jacrevimportjax.numpyasjnpdefhessian_1(f):returnjacfwd(jacrev(f))defhessian_2(f):returnjacfwd(jacfwd(f))defhessian_3(f):returnjacrev(jacfwd(f))defhessian_4(f):ret......
  • Part 3:为什么 NetOps 是通往 AIOps 的桥梁
    转载网络运营(或NetOps)团队,传统上使用性能监控工具来管理企业网络的运行状况和性能。然而,网络使用量的增长加上分散的网络部署,导致许多人寻求替代的性能监控方法,包括使用人工智能进行IT运营(AIOps)。本文比较了NetOps实践中的传统性能监控方法,并讨论了团队最终转向采用AIOps的原......
  • 洛谷题解-P1673 [USACO05FEB] Part Acquisition S
    https://www.luogu.com.cn/problem/P1673题目描述奶牛们接到了寻找一种新型挤奶机的任务,为此它们准备依次经过N(1≤N≤5×104)N(1\leN\le5\times10^4)N(1≤N≤5×104)颗行星,在行星上进行交易。为了方便,奶牛们已经给可能出现的K(1≤K≤103)K(1\leK\le10^3)K(1≤K≤103)......