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

问题

1️⃣ 重构赋值

  • 代码一
javascript 复制代码
const socketIO = require('socket.Io')
const Server = socketIO.Server
const server = new Server()
  • 代码二
javascript 复制代码
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就来管理这个连接。

相关推荐
自小吃多2 小时前
高云FPGA ModelSim中的仿真
笔记·嵌入式硬件·fpga开发
小刘在重生~3 小时前
Java 异常体系完整笔记
java·笔记·python
泡泡鱼(敲代码中)4 小时前
Python语法技术学习笔记
开发语言·笔记·python·学习·pycharm
祁白_6 小时前
防御引擎绕过方法
笔记·web安全·php·防御引擎
FungLeo6 小时前
成为全栈·Node 后端篇·容器化:给 Node 应用写一个像样的 Dockerfile
docker·node.js·dockerfile·成为全栈·后端服务容器·docker 容器
志尊宝6 小时前
Vue3 零基础每日笔记(009):watch 侦听器——数据一变就“做事“
vue.js·笔记·缓存
噜~噜~噜~6 小时前
操作系统笔记-3.1.1.4 (选修)覆盖与交换
笔记·操作系统
志尊宝7 小时前
Vue3 零基础每日笔记(011):生命周期钩子——在正确的时间做正确的事
javascript·vue.js·笔记
prog_61037 小时前
【笔记】用cursor手搓cursor(十)
人工智能·笔记·大语言模型·agent
浔溺8 小时前
al+大数据每日学习笔记36
大数据·笔记·学习