Neurotic Pantaloon Maker

    @36node/whisper

    0.1.11 • Public • Published

    whisper

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

    TCP server framework, communicating in binary data.

    NPM version NPM downloads CircleCI codecov donate

    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

    Keywords

    none

    Install

    npm i @36node/whisper

    DownloadsWeekly Downloads

    2

    Version

    0.1.11

    License

    MIT

    Unpacked Size

    222 kB

    Total Files

    8

    Last publish

    Collaborators

    • lidongbest5
    • zzswang
    • hauy
    • 36node-robot