0.1.1 • Published 8 months ago

@xdffe/web-rpc v0.1.1

Weekly downloads
-
License
-
Repository
-
Last release
8 months ago

web-rpc

面向web iframe的rpc实现,底层基于postMessage跨域通讯实现

使用方法

const rpc = RPC.init();
rpc.init(window.parent, {
    tag: '[rpc]parent<--', // '[rpc]-->iframe'
    cid: 1
});
const name = await rpc.call('rename', {});
rpc.callProc('setName', 'xxx');

API

  1. 初始化
    • RPC.init(win: Window, options: WebRPCOptions)
      • WebRPCOptions { tag: string, cbid: number = 1 }
  2. 工具函数
    • async RPC.sleep(ms: number)
  3. EventEmitter
    1. 公开方法
      • emitter.on(type: string, listener: Function)
        • 添加事件监听器
      • emitter.un(type: string, listener?: Function)
        • 移除事件监听器
      • emitter.emit(type: string, ...args: any[])
        • 触发事件
  4. WebRPC类:
    • 继承自EventEmitter
    • 公开方法
      • rpc.stub(name: string, impl: Function)
        • 注册一个stub
      • rpc.sendMsg(json)
        • 发送消息
      • rpc.call(name: string, ...args: any[])
        • 调用远程async函数(有返回值)
      • rpc.callProc(name: string, ...args: any[]);
        • 调用远程过程(无返回值)
    • 私有方法(内部使用)
      • rpc._sendCommand(cmd: string, args: any[] = [])
        • 发送命令
      • rpc._reg(cb: Function, async: boolean)
        • 注册回调
      • rpc._wrap(cbid: number, flag: boolean = false)
        • 包装回调函数
      • rpc._remove(cbid: number)
        • 移除回调
      • rpc._callback(cbid: number, args: any[])
        • 执行返回回调
      • rpc._call(cbid: number, args: any[])
        • 执行回调
0.1.1

8 months ago