gov-channel
v0.1.3-0
Published
## 理念
Downloads
6
Readme
gov-channel
理念
channel 分为两种,实现跨iframe双向、多向通信:
- 主channel,即 MainMessageChannel
- 从channel,即 SubMessageChannel
- 一个main channel可以挂接多个sub channel, 可以实现主、从通信和从从通信
- 主channel对于消息有缓存机制,缓存一次最近的事件, 从channel挂载时触发
- 可以实现从从设备间的通信,通信要通过主设备
- 当主设备主动发起通信时,如果,所有从channel的应答是trusy的话,所有从的事件响应,否则所有从抛弃
- 目前主设备不主动发现从设备,从设备主动挂在
主设备可以在触发时间时,指定数据是否可以被保存。(后期应该支持indexDB和localstorage存储)
流程图如下:
+---+ +---+ +---+
| e | <-- | | --> | b |
+---+ | a | +---+
+---+ | | +---+
| f | <-- | | --> | c |
+---+ +---+ +---+
|
|
v
+---+
| d |
+---+
接口设计
class Channel {
constructor(
public name: string,
public state: S = {} as any,
private option: MainChannelOption = { ensure: true, sameOrigin: true},
) {}
// 注册自己到主设备
public registTo(name: string): Channel;
// 主设备向从设备发送消息
public postMessage<T = {}>(state: T);
// 从设备注册监听数据变化回调
public subscribe(handler: Handler<S>);
// 关闭设备
public close();
}
使用方法
// 主设备用法
const channel = new govChannel('main',{
orgnazitionId: 'xx', bizYear: 'xx', theme: 'xx'
});
channel.postMessage({orgnazitionId: 'xx'}).then(()=>{
// 数据发送成功
})
.cactch(()=>{
// 数据发送失败
})
消息规范
- 内部消息规范
TODO
- [ ] 增加消息中转功能
发布
正式版:
npm run pub [major,minor, patch]
非正式版:
npm run pub [premajor,preminor,prepath, prerelease]