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就来管理这个连接。

相关推荐
巴伦是只猫1 小时前
【机器学习笔记Ⅰ】13 正则化代价函数
人工智能·笔记·机器学习
浪裡遊2 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
whale fall2 小时前
npm install安装的node_modules是什么
前端·npm·node.js
会飞的鱼先生2 小时前
Node.js-http模块
网络协议·http·node.js
用户3521802454755 小时前
MCP极简入门:node+idea运行简单的MCP服务和MCP客户端
node.js·ai编程
X_StarX7 小时前
【Unity笔记02】订阅事件-自动开门
笔记·学习·unity·游戏引擎·游戏开发·大学生
MingYue_SSS7 小时前
开关电源抄板学习
经验分享·笔记·嵌入式硬件·学习
巴伦是只猫7 小时前
【机器学习笔记 Ⅱ】1 神经网络
笔记·神经网络·机器学习
weixin_437398217 小时前
转Go学习笔记(2)进阶
服务器·笔记·后端·学习·架构·golang
teeeeeeemo8 小时前
回调函数 vs Promise vs async/await区别
开发语言·前端·javascript·笔记