gov-channel

0.1.3-0 • Public • Published

gov-channel

理念

channel 分为两种,实现跨iframe双向、多向通信

  1. 主channel,即 MainMessageChannel
  2. 从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(()=>{
     // 数据发送失败
  })
 

消息规范

  1. 内部消息规范

TODO

  • 增加消息中转功能

发布

正式版:

npm run pub [major,minor, patch]

非正式版:

npm run pub [premajor,preminor,prepath, prerelease]

Readme

Keywords

none

Package Sidebar

Install

npm i gov-channel

Weekly Downloads

6

Version

0.1.3-0

License

none

Unpacked Size

63.6 kB

Total Files

22

Last publish

Collaborators

  • yonyougov