@36node/whisper 中文文档教程
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
更多
你可能也喜欢
- 11ty-simple-page-post-creator 中文文档教程
- 3hson-react-modern-calendar-datepicker 中文文档教程
- @12core/hyperid-wasm 中文文档教程
- @1o1w1/create-react-app 中文文档教程
- @1px.one/react-hooks 中文文档教程
- @58fe/p5 中文文档教程
- @5ire/api-derive 中文文档教程
- @aasaam/information 中文文档教程
- @aavenel/ckeditor5-build-classic-source-editing 中文文档教程
- @abaxx/abaxx-id 中文文档教程