@36node/whisper
v0.1.11
Published
A module for tcp framework, like kao for web.
Downloads
785
Readme
whisper
Inspired by koa.js, follow koa, great project.
TCP server framework, communicating in binary data.
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
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
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- 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