@36node/whisper 中文文档教程

发布于 4年前 浏览 21 项目主页 更新于 3年前

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 和您的相关数据。
    原文