Inspired by koa.js, follow koa, great project.
TCP server framework, communicating in binary data.
yarn add whisper
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
构造函数,创建 Application
启动 server,监听端口
return json data
使用中间件
其中 fn 即中间件
fn = (ctx, next) => { ... }
群发消息
- data: string/buffer/json
- filt: function 过滤符合条件的 sessions
filt:
fn = session => {
return true;
};
origin data from socket buffer
当前通讯 在会话中的位置序号
net.Socket
Session
同一个 socket 的连续数据传输组成一个会话
Application
发送数据到客户端
- data: string, buffer or json
如果 socket.writable === false, 那么数据将不会发送
关闭会话
session 的唯一编号
session 创建的时间
session 关闭的时间
Application
同 ctx.app
net.Socket
同 ctx.socket
- 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
whisper © 36node, Released under the MIT License.
Authored and maintained by 36node with help from contributors (list).
github.com/zzswang · GitHub @36node