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);
相关推荐
27669582923 小时前
599比分wasm逆向
websocket·wasm·599比分·599比分逆向·599比分wasm·ads-tracker·tracker-baidu
donecoding6 小时前
nrm、corepack、npm registry 三者的爱恨情仇
前端·node.js·前端工程化
明月_清风7 小时前
关于node 模块化的现状与未来
前端·node.js
李白的天不白1 天前
webpack 与 webpack-cli 版本匹配问题
前端·webpack·node.js
TickDB1 天前
Python 接入国内期货 Tick 行情:从 CTP 到统一 API 的工程实践
python·websocket
李白的天不白1 天前
webpack 与axios 版本冲突问题
前端·webpack·node.js
donecoding1 天前
pnpm 全局包与 nvm 的真相:命令永在,运行时随缘
node.js·claude
老蒋每日coding1 天前
Node.js 安装指南(Mac 版本)
macos·node.js
吴声子夜歌2 天前
Node.js——JSON-Server轻量级RESTful API
node.js·json·restful·json-server