egg-longpolling
提供与客户端的长连接支持。
Install
$ npm i egg-longpolling --save
Usage
// {app_root}/config/plugin.jsexportslongpolling = enable: true package: 'egg-longpolling';
Configuration
// {app_root}/config/config.default.jsexportslongpolling = // 可订阅的事件名称,需要在业务中调用 publish 触发此事件,支持两种格式定义: // 1. 简单的字符串,可直接使用 publish(eventName) 触发 // 2. 包含资源 id 区分关心的资源,触发时需要附加参数: publish(eventName, resourceId) subjects: 'event1' 'event2' category // 订阅相关的请求,如 /longpolling/1/test basePath: '/longpolling/' // 订阅连接超时时间,单位为秒 timeout: 30;
see config/config.default.js for more detail.
Example
backend:
apppolling; // 单个事件apppolling; // 批量事件,只支持简单格式apppolling; // 通知只关心 book 类的资源
frontend:
async { const id = await // response: { id: 1} // start to listen const result = await // or fetch with complex type // const result = await fetch('/longpolling/2/complex?category=book) // after event emit or timeout, will get response console // { name: 'test', update: 1 } or { name: 'test', timeout: 1 } // TODO: start next listen ...}
Questions & Suggestions
Please open an issue here.