@36node/whisper 中文文档教程

发布于 4 年前 浏览 28 项目主页 更新于 2 年前

whisper

Inspired by koa.js, follow koa, great project.

TCP server framework, communicating in binary data.

NPM versionNPM downloadsCircleCIcodecovdonate

Install

yarn add whisper

Usage

import Whisper from "whisper";

const app = new Whisper();

app.listen(3456);

app.use(async (ctx, next) => {
  const buf = ctx.data;

  // handle request
  ctx.start = buf.toString("utf8", 0, 2);

  await next();

  // send data back to client
  // body could be string or buf
  // body also can be a stream, like file stream
  ctx.body = "haha";
});

app.use(async (ctx, next) => {
  await next();
  console.log(ctx.start);
});

逻辑在 中间件中写,通过 app.use 调用,整体采用和 KOA 一样的洋葱模型。

TODO: 补更多的 readme

API

Application 即 Whisper

Whisper()

构造函数,创建 Application

Whisper.listen(port)

启动 server,监听端口

Whisper.toJSON()

return json data

Whisper.use(fn)

使用中间件

其中 fn 即中间件

fn = (ctx, next) => { ... }

Whisper.broadcast(data, filt)

群发消息

  • data: string/buffer/json
  • filt: function 过滤符合条件的 sessions

filt:

fn = session => {
  return true;
};

Context

ctx.data

origin data from socket buffer

ctx.no

当前通讯 在会话中的位置序号

ctx.socket

net.Socket

参见 nodejs 文档

ctx.session

Session

同一个 socket 的连续数据传输组成一个会话

ctx.app

Application

Session

method Session.send(data)

发送数据到客户端

  • data: string, buffer or json

如果 socket.writable === false, 那么数据将不会发送

method Session.close()

关闭会话

Session.id

session 的唯一编号

Session.createdAt

session 创建的时间

Session.closedAt

session 关闭的时间

Session.app

Application

同 ctx.app

Session.socket

net.Socket

同 ctx.socket

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

whisper © 36node, Released under the MIT License.

Authored and maintained by 36node with help from contributors (list).

github.com/zzswang · GitHub @36node

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文