Node.js笔记(二):Socket.io

问题

1️⃣ 重构赋值

  • 代码一
const socketIO = require('socket.Io')
const Server = socketIO.Server
const server = new Server()
  • 代码二
const {Server} = require('socket.Io')
const serve = new Server()

在这里的关键点就是{}的作用,这里有一个概念就是“重构赋值”。
其实就是对于我们导出的模块socket.Io,其实他是一个具有类的结构,他有很多方法比如socket.Io.Serversocket.Io.client等,如果我们用{Server}会直接取出.Server类的方法,同样也会使代码更加简洁。

2️⃣ new Server()与 Server(server)的区别

在使用 Socket.IO 时,new Server()Server(server) 的选择取决于你是否需要将 Socket.IO 与一个现有的 HTTP/HTTPS 服务器整合在一起。

两种方法的区别

特性new Server()Server(server)
独立性创建一个独立的 WebSocket 服务器依赖于现有的 HTTP/HTTPS 服务器
端口复用需要一个独立的端口HTTP 和 WebSocket 可共享同一端口
适用场景单独运行的 WebSocket 服务或简单测试与现有 HTTP/HTTPS 服务集成
常见用途仅处理 WebSocket 连接WebSocket 与 REST API 或网页服务一起使用

如何选择

  • 使用 new Server()

    • 如果你仅需要运行一个简单的 Socket.IO 服务器,不涉及 HTTP 请求或 Express 路由。
    • 测试或开发阶段快速启动 WebSocket 服务。
  • 使用 Server(server)

    • 如果你的项目需要同时支持 HTTP 请求(如 REST API)和 WebSocket。
    • 如果你的服务需要通过一个端口提供综合功能(例如,Web 页面、API 和实时通信)。

总结

  1. 单独运行:用 new Server(),适合独立 WebSocket 服务。
  2. 结合 HTTP/HTTPS:用 Server(server),适合需要同时处理 HTTP 请求和 WebSocket 的场景。

Socket.Io科普

1️⃣ 特点

-服务端和客户端的相互通信

客户端轮询

  • 事件驱动编程
  • 自动重连
  • 房间和命名空间
    • 房间可以让不同的用户进入,并让消息只在该房间广播
    • 支持多个逻辑命名空间,以便在同一个服务器上实现多个模块功能
  • 实时聊天
  • 在线协作,同步更新

2️⃣ 应用场景

  • 实时聊天应用
  • 在线写作工具
  • 试试通知系统
  • 多人在线游戏
  • 实时数据可视化

socket.on与io.on的区别

io.on监听的所有客户端与服务端的过程,一旦新客户端与服务端连接则会产生一个socket的事例,则这个socket就来管理这个连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/886948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021 年 12 月青少年软编等考 C 语言三级真题解析

目录 T1. 我家的门牌号思路分析T2. 子串计算思路分析T3. 吃糖果思路分析T4. 拨钟问题思路分析T5. 分形盒思路分析T1. 我家的门牌号 我家住在一条短胡同里,这条胡同的门牌号从 1 1 1 开始顺序编号。 若所有的门牌号之和减去我家门牌号的两倍,恰好等于 n n n,求我家的门牌…

模拟器多开限制ip,如何设置单窗口单ip,每个窗口ip不同

很多手游多开玩家都是利用安卓模拟器实现手游多开,但是很多手游会限制ip,导致多开之后封号等问题,模拟器本身没有更换IP的功能,就需要通过第三方软件来实现 安卓模拟器概述 雷电模拟器、夜神模拟器、mum模拟器等都是目前市场上比…

微信万能门店小程序系统存在任意文件读取漏洞

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…

入门pandas

pandas是本书后续内容的首选库。它含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具。pandas经常和其它工具一同使用,如数值计算工具NumPy和SciPy,分析库statsmodels和scikit-learn,和数据可视化库matplotlib。pandas是基于NumPy…

Apple Vision Pro开发001-开发配置

一、Vision Pro开发硬件和软件要求 硬件要求软件要求 1、Apple Silicon Mac(M系列芯片的Mac电脑) 2、Apple vision pro-真机调试 XCode15.2及以上,调试开发和打包发布Unity开发者账号&&苹果开发者账号 二 、开启无线调试 1、Apple Vision Pro和Mac连接同…

无人机与低空经济:开启新质生产力的新时代

无人机技术作为低空经济的核心技术之一,正以其独特的优势在多个行业中发挥着重要作用,成为推动新质生产力革命的重要力量。无人机的应用范围广泛,从农业植保到物流配送,从城市监测到紧急救援,无人机的身影无处不在&…

Flutter中sqflite的使用案例

目录 引言 安装sqflite 创建表 查询数据 添加数据 删除数据 更新数据 完整使用案例 引言 随着移动应用的发展,本地数据存储成为了一个不可或缺的功能。在Flutter中,sqflite 是一个非常流行且强大的SQLite插件,它允许开发者在移动设备…

故障排除-------K8s挂载集群外NFS异常

故障排除-------K8s挂载集群外NFS异常 1. 故障现象2. 原因梳理2.1 排查思路2.2 确认yaml内容2.3 创建k8s内的nfs测试2.3.1 创建nfs和svc2.3.2 测试创建pvc2.3.3 测试结果 2.4 NFS服务端故障排除2.4.1 网络阻断排除2.4.2 排除服务状态问题2.4.3 排查NFS权限问题 3. 故障排除 1. …

大数据的left_join

刷算法题: 第一遍:1.看5分钟,没思路看题解 2.通过题解改进自己的解法,并且要写每行的注释以及自己的思路。 3.思考自己做到了题解的哪一步,下次怎么才能做对(总结方法) 4.整理到自己的自媒体平台。 5.再刷重复的类…

安卓CameraX的使用

如果要在安卓应用中操作相机,有三个库可以选: Camera(已废弃):Camera是安卓最早的包,目前已废弃,在Android 5.0(API 级别 21)的设备上操作相机可以选择该包,…

微服务即时通讯系统的实现(客户端)----(2)

目录 1. 将protobuf引入项目当中2. 前后端交互接口定义2.1 核心PB类2.2 HTTP接口定义2.3 websocket接口定义 3. 核心数据结构和PB之间的转换4. 设计数据中心DataCenter类5. 网络通信5.1 定义NetClient类5.2 引入HTTP5.3 引入websocket 6. 小结7. 搭建测试服务器7.1 创建项目7.2…

02_Spring_IoC实现

接下来先简单说一下关于IoC的一些要点,后面我们再详细一步一步讨论。 一、IoC控制反转 IoC控制反转它是一种思想,不是具体的实现控制反转的目的是为了降低程序的耦合度,提高程序的可扩展性,从而满足OCP原则和DIP原则控制反转,那到底反转是什么东西? 我们不再使用某个对象…

凸函数与深度学习调参

问题1:如何区分凸问题和凹问题? 问题2:深度学习如何区分调参?

游戏开发实现简易实用的ui框架

游戏开发实现简易实用的ui框架 本文使用cocos引擎实现,框架代码本质上不依赖某一个引擎,稍作修改也能作为其他引擎的实现 1.1 UI管理框架的核心需求剖析 分层与类型管理 对不同类型UI需要进行分层管理。不同层级的UI需要有不同的父节点,保证渲…

使用可视化工具kafkatool连接docker的kafka集群,查看消息内容和offset

1、下载kafkatool 下载地址Offset Explorer,下载对应系统的offset explorer 下载完,傻瓜安装即可(建议放D盘),在开始菜单输入offset找到该应用打开 打开 2、连接kafka 点击File > add new connection Bootstrap…

关于Java使用ueditor上传图片的一些总结

1.如何配置ueditor让上传的图片到项目之外? 因为图片上传到web项目中,重新部署项目可能会丢失图片。 解决方法:下载ueditor.1.1.2.jar. 地址:ueditor-1.1.2项目源码及jar包.zip 链接: https://pan.baidu.com/s/1Bhumfw8OX16n0MTO9ur73g 提…

React可以做全栈开发吗

React可以做全栈开发吗? 答案是肯定的,而且还比较完美 React可以用于全栈开发,以下是具体的介绍: 前端部分 构建用户界面 React是一个用于构建用户界面的JavaScript库,它通过组件化的方式让开发者能够高效地创建交互式的UI。例…

【前端学习笔记】Javascript学习二(运算符、数组、函数)

一、运算符 运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。 JavaScript中常用的运算符有: 算数运算符、递增和递减运算符、比较运算符、逻辑运算符、赋值运算符 算数运算符: 、-…

Redis五大基本类型——List列表命令详解(命令用法详解+思维导图详解)

目录 一、List列表类型介绍 二、常见命令 1、LPUSH 2、LPUSHX 3、RPUSH 4、RPUSHX 5、LRANGE 6、LPOP 7、RPOP 8、LREM 9、LSET 10、LINDEX 11、LINSERT 12、LLEN 13、阻塞版本命令 BLPOP BRPOP 三、命令小结 相关内容: Redis五大基本类型——Ha…

快速入门消息队列MQ、RabbitMQ

目录 一、MQ简介 1.同步调用 2.异步调用 3.技术选型 二、RabbitMQ 1.安装 2.控制台的使用说明 2.1交换机 2.2队列​编辑 2.3绑定关系 3.AMQP 3.1快速入门 3.2WorkQueues模型 3.3交换机 3.3.1 Fanout交换机 3.3.2 Direct交换机 3.3.3 Topic交换机 3.4 声明交换机…