websocket与node.js实现

什么是 websocket?

websoket 是一种网络通信协议,基于 tcp 连接的全双工通信协议(客户端和服务器可以同时收发信息),值得注意的是他不基于 http 协议,websocket 只有在建立连接的时候使用到 http 协议进行连接。

websoket 有如下特点:

  • 只建立一次连接,后续会一直保持连接状态
  • 没有同源限制,可以跨域
  • 可以接受发送任何类型数据
  • 协议是 ws 或 wss,wss 是加密的,增加了 ssl 协议

通过node实现websocket

提示:使用ts实现,运行代码前需要执行如下操作

  1. npm init
  2. tsc --init
  3. npm i @types/node -D
  4. npm i ws
  5. npm i @types/ws -D
typescript 复制代码
import ws from "ws";
// 创建socket服务
const server = new ws.Server({ port: 8080 });
// 监听连接的建立
const openHandle = () => { };
// 监听连接关闭
const closeHandle = () => { };
// 监听错误
const errorHandle = () => {};
const connectionHandle = (ws: ws) => {
  ws.on("message", messageHandle);
};
const messageHandle = (data: Buffer) => {
  // 需要注意的是websocket拿到的是二进制数据,需要通过toString进行转换
  console.log(data.toString());
  // 将收到的信息广播出去
  server.clients.forEach(item => {
    item.send(data.toString());
  });
};

server.on("open", openHandle);
server.on("close", closeHandle);
server.on("error", errorHandle);
server.on("connection", connectionHandle);
相关推荐
LRL_8 小时前
【实战指南】Node.js 跨平台依赖下载:如何在 Windows/Linux 环境下互跨下载目标系统的 npm/pnpm 包
linux·windows·node.js
福兮说11 小时前
URL 编码的七个坑:c++ 传到后端变空格、%25 套娃、截断 emoji 直接报错
开发语言·前端·javascript·node.js·url
liangshanbo121512 小时前
Webpack vs Vite 底层原理高频追问的问题
前端·webpack·node.js
玖石书12 小时前
HiSH 通过 apk 安装 Node.js、npm 与 pnpm
npm·node.js·鸿蒙·hish
池塘水悠悠12 小时前
nodejs24安装(node.js安装)
node.js
web打印社区13 小时前
JS 静默打印怎么做:纯前端为什么不行,以及最小可跑通写法
开发语言·前端·javascript·websocket·网络协议·http·pdf
LRL_13 小时前
【K8s 存储】Longhorn v1.12.1 离线安装全流程:外网制作离线包 + 内网部署(附踩坑实录)
linux·windows·node.js
Timmy14 小时前
前端转全栈笔记:讲框架之前,先把 TypeScript 这关过了
前端·人工智能·node.js
李游Leo14 小时前
HarmonyOS 7 + Node.js-JSON Schema:审核测试路径与版本事实的一致性门禁【鸿蒙心迹】
node.js·json·harmonyos
liangshanbo121515 小时前
Monorepo 工程化面试题:如何设计 Web + Node.js 中间层 + Shared + Scripts 的 Monorepo?
前端·node.js