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);
相关推荐
鲨鱼辣钊1 小时前
FastAPI进阶_Day21_WebSocket实时通讯实战
websocket·网络协议·fastapi
小婉4 小时前
我用 Next.js + React Flow 从零搭建了一个可视化 AI 工作流编排平台
前端·人工智能·node.js
秋田君8 小时前
Qt_webSocket协议编程实战
开发语言·qt·websocket
抓不住时间的沙8 小时前
N1搭建守护环境以及重装 Armbian 后完整恢复整套守护环境,清理日志步骤
node.js
meilindehuzi_a8 小时前
从域名到数据库:React + Node.js 项目部署全流程与用户访问链路
数据库·react.js·node.js
haerapi8 小时前
流式对话接口怎么选:SSE 与 WebSocket 的原理、实现和工程边界
网络·websocket·网络协议
李游Leo13 小时前
Node.js 开发环境安装与 npm/pnpm 国内镜像配置(Windows / macOS / Linux)
npm·node.js·pnpm·前端开发·开发环境
予昊1 天前
从零实现“在线五子棋对战“:WebSocket 实时通信 + 段位匹配
java·开发语言·网络·websocket
隔窗听雨眠1 天前
大模型实时通信协议深度对比:SSE、WebSocket与gRPC的选型指南与实战解析
网络·websocket·网络协议
阿黎梨梨1 天前
AI也有记忆?LangChain Memory 管理指南
langchain·node.js·llm