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

相关推荐
不会调制解调的猫26 分钟前
笔记 | 内网服务器通过wifi穿透,设置流量走向
运维·服务器·笔记
全马必破三1 小时前
fs 文件系统:Node.js 操作磁盘的 “万能工具”
node.js
tryCbest1 小时前
Node.js使用Express框架解决中文乱码问题
node.js·express
时间的情敌1 小时前
对Webpack的深度解析
前端·webpack·node.js
濮水大叔1 小时前
AOP编程有三大场景:控制器切面,内部切面,外部切面,你get到了吗?
typescript·node.js·nestjs
程序员大雄学编程2 小时前
「机器学习笔记7」决策树学习:从理论到实践的全面解析(上)
笔记·决策树·机器学习
Icoolkj2 小时前
npm、npx、pnpm 深度解析:从原理到实战的全方位指南
前端·npm·node.js
尘埃不入你眼眸2 小时前
powerShell无法执行npm问题
前端·npm·node.js
我是一只懒羊羊2 小时前
从零搭建 Node.js企业级 Web 服务器:自定义服务&数据请求
前端·node.js·全栈
我有一棵树2 小时前
npm uninstall 执行的操作、有时不会删除 node_modules 下对应的文件夹
前端·npm·node.js