前往小程序,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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
socket.io的简单使用
在开发websocket的时候,我们可能会用到socket.io这个库,来看一下这个库的简答应用,先看一个简单的案例,服务端代码:
挥刀北上
2021/02/03
2.1K0
《 Socket.IO》 解决 WebSocket 通信!
大家好呀,我是小菜~ 本文主要介绍 Socket.IO 微信公众号已开启,小菜良记,没关注的同学们记得关注哦! 在介绍 Socket.IO 之前, 我们先考虑一个问题, 如果这个时候有个需求, 类似
蔡不菜丶
2022/09/21
2.4K0
《 Socket.IO》 解决 WebSocket 通信!
Nodejs+socket.io搭建WebRTC信令服务器
我们在学习 WebRTC 时,首先要把实验环境搭建好,这样我们就可以在上面做各种实验了。
音视频_李超
2020/04/01
8.4K2
Nodejs+socket.io搭建WebRTC信令服务器
socket.io实践干货
一、前言 socket.io 实现了实时双向的基于事件的通讯机制,是基于 webSocket 的封装,但它不仅仅包括 webSocket,还对轮询(Polling)机制以及其它的实时通信方式封装成了通用的接口,并且在服务端实现了这些实时机制的相应代码 socket.io 是跨平台的,可以实现多平台的即时通讯 由于 iOS 端进行 socket 编程主要使用 GCDAsyncSocket 框架,但要实现 Android、iOS、web 多平台的通讯,还是选择统一的框架或协议比较好。 基本 api,使用 soc
sunsky
2020/08/20
1.4K0
socket.io实践干货
Socket的讲解
伙伴们,如果你觉得我写的文章对你有帮助就给zayyo点一个赞👍或者关注➕都是对我最大的支持。当然你也可以加我微信:IsZhangjianhao,邀你进我的前端学习交流群,一起学习前端,成为更优秀的工程师~
zayyo
2023/11/18
2161
Koa结合socket.io实现分桌点餐
去饭店吃饭的时候,桌上都会有一个二维码,每一桌的每一个用户都可以拿出手机独立点餐,而且同一桌的用户点餐都会在同一个购物车里,比如张三与李四一起来吃饭,张三点了青椒炒肉,李四拿出手机点餐的时候,购物车里就会显示张三点的青椒炒肉,而且每一桌的点餐与其他桌的不会相互干扰,付款的时候以桌为单位独立结账。
越陌度阡
2020/11/26
5300
使用node、Socket.io 搭建简易聊天室
Socket.io是一个WebSocket库,会自动根据浏览器从WebSocket、AJAX长轮询、Iframe流等等各种方式中选择最佳的方式来实现网络实时应用,而且支持的浏览器最低达IE5.5。 Socket.io 服务器 和 Socket.io 客户端之间全双工通信信道 尽可能使用WebSocket 连接建立(”尽可能“就说明要求客户端和服务端都必须使用,HTTP 长轮询`作为后备。 在了解socket-io前,我们先了解三种通信方式和Http轮询。
can4hou6joeng4
2023/11/29
4630
Node.js下基于Express + Socket.io 搭建一个基本的在线聊天室
  采用nodeJS设计,基于express框架,使用WebSocket编程之 socket.io机制。聊天室增加了 注册登录 模块 ,并将用户个人信息和聊天记录存入数据库.
书童小二
2018/09/03
2.7K0
Node.js下基于Express + Socket.io 搭建一个基本的在线聊天室
socket.io
本译文来源于https://socket.io/get-started/chat/,不足之处请多批评指正。 最近在学些vuejs和websocket相关技术,使用了websocket的两个封装的库vue-socket.io和vue-websocket
ccf19881030
2020/04/10
4.1K0
socket.io
koa+socket.io尝试简单的web动作同步
尝试用过browser-sync辅助开发的前端同学,大概都会感到神奇:在多个端打开网页,网页的动作却是完全同步的。
用户1394570
2018/08/08
8660
koa+socket.io尝试简单的web动作同步
vue + socket.io实现一个简易聊天室
     vue + vuex + elementUi + socket.io实现一个简易的在线聊天室,提高自己在对vue系列在项目中应用的深度。因为学会一个库或者框架容易,但要结合项目使用一个库或框架就不是那么容易了。功能虽然不多,但还是有收获。设计和实现思路较为拙劣,恳请各位道友指正。 可以达到的需求 能查看在线用户列表 能发送和接受消息 使用到的框架和库 socket.io做为实时通讯基础 vuex/vue:客户端Ui层使用 Element-ui:客户端Ui组件 服务端实现     实现聊天服务器的
sam dragon
2018/01/17
4.2K3
vue + socket.io实现一个简易聊天室
【教程】如何使用Javascript构建WebRTC视频直播?
WebRTC是一个免费的开源项目,它通过简单的API为浏览器和移动应用程序提供实时通信功能。本文将向你展示WebRTC的基本概念和功能,并指导你使用Node.js构建自己的WebRTC视频直播。
TSINGSEE青犀视频
2021/04/12
4.5K0
低延迟双向实时事件通信 Socket.IO
Socket.IO 是一个库,可以在客户端和服务器之间实现低延迟,双向和基于事件的通信。
Tinywan
2024/08/27
3620
低延迟双向实时事件通信 Socket.IO
Node.js中运用socket.io实现智能回复机器人与聊天室功能
众所周知,Java强在计算,而Node强在IO,在Node后端开发中,时常会遇到要求做聊天室和智能回复机器人的功能,这也正是Node的强项,今天给大家介绍一下Node中使用socket.io实现聊天室与智能机器人的原理。
越陌度阡
2020/11/26
1.3K0
Express结合socket.io实现分桌点餐
去饭店吃饭的时候,桌上都会有一个二维码,每一桌的每一个用户都可以拿出手机独立点餐,而且同一桌的用户点餐都会在同一个购物车里,比如张三与李四一起来吃饭,张三点了青椒炒肉,李四拿出手机点餐的时候,购物车里就会显示张三点的青椒炒肉,而且每一桌的点餐与其他桌的不会相互干扰,付款的时候以桌为单位独立结账。
越陌度阡
2020/11/26
6560
Node.js + Socket.io 实现一对一即时聊天
实现一对一即时聊天应用,重要的一点就是消息能够实时的传递,一种方案就是熟知的使用 Websocket 协议,本文中我们使用 Node.js 中的一个框架 Socket.io 来实现。
五月君
2020/07/22
2.7K0
实现一个简单的WebSocket聊天室
run node index.js,并在浏览器打开 http://localhost:3000,访问成功即可看到
超超不会飞
2020/09/18
1.1K0
实现一个简单的WebSocket聊天室
Express结合Socket.io实现聊天室功能
之前写了一篇 《Node.js中运用socket.io实现智能回复机器人与聊天室功能》 发现浏览人还挺多,不过这篇博客只是讲解了一些实现原理,现在运用Node的Express框架给大家实现一下聊天室。
越陌度阡
2020/11/26
1.2K0
websocket深入浅出
答: 它是一种网络通信协议,是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
全栈程序员站长
2022/09/14
2.3K0
websocket深入浅出
使用socket.io开发简单群聊功能
1、新建package.json文件: { "name": "socket-chat-example", "version": "0.0.1", "description": "my fi
用户1141560
2017/12/26
1.2K0
相关推荐
socket.io的简单使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验