基于 koa2 简单封装 websocket,集成心跳检测,广播消息等功能


Keywords
koa2, koa, ws, websocket, upgrade, broadcast, message
License
ISC
Install
npm install koa-my-ws@1.0.10

Documentation

koa-my-ws

基于 koa2 简单封装 websocket,集成心跳检测,广播消息等功能

安裝

npm i koa-my-ws

基本使用

const Koa = require("koa");
const Router = require("koa-router");
const app = new Koa();
const { createWsServer, upgradeWs, broadcastClient } = require("koa-my-ws");
// 创建ws服务,设置心跳检测时间
app.use(createWsServer({ checkTime: 3000 }));

const router = new Router();
router.get("/ws/:id", async (ctx, next) => {
  const { id } = ctx.params;
  // 升级协议 返回当前ws对象 第二个参数可以携带自定义唯一id
  let ws = await upgradeWs(ctx, id);
  if (ws) {
    ws.on("message", data => {
      console.log(data);
    });
  }
  next();
});

app.use(router.routes());
app.listen(3000);

内置方法

createWsServer(wsOptions)

创建一个 websocket 服务,返回一个中间件

wsOptions(可选) 描述 默认值
heartbeat 是否开启心跳检测(如果服务端 ping 不通客户端,客户端将删除这个连接) true
checkTime 检测心跳轮询时间 30000
...options 合并 ws 的基本配置options

upgradeWs(ctx,clientId,state)

升级协议,返回当前 ws 客户端

参数 描述 默认值
ctx(必选) 当前上下文 null
clientId(可选) 指定连接的唯一 建议用户 id 或者 token 等建立关联 null
state(可选) 自定义数据 挂载在 ws 对象上方便后续可能使用 {}

broadcastClient(data,clientId)

发送广播消息,将发送给当前已连接的所有 ws 客户端,可选指定的 clientId 发送

参数 描述 默认值
data(必选) 消息内容 null
clientId(可选) 指定 id 发送 null

getClients(clientId)

根据 clientId 获取 ws 客户端 返回数组,不传则返回全部

参数 描述 默认值
clientId(可选) 指定 id null

getClientNumber()

获取当前已连接客户端数量