0.2.1 • Published 4 years ago

post-message-im v0.2.1

Weekly downloads
1
License
ISC
Repository
github
Last release
4 years ago

NPM version Build Status npm downloads

Electron版请参考:electron-ipc-im,抽象主进程、主窗口、非主窗口,让通信更简单。

概述

页面server与iframeclient的通信过程,可以用一种简易的消息模型来理解。

Feature

  • 兼容所有支持ES5语法的浏览器
  • 支持离线消息模型
  • 平台中立,支持electron

安装

npm i post-message-im

client 使用

import { Client } from 'post-message-im'

const client = new Client({id: 'iframe id'})

client.request({
    type: '',
    params: {},
    callback: (err, res) => {}
})

client.on({
    type: '',
    callback: (err, res) => {}
})

client.request({
    type: 'offline',
    callback: (err, res) => {
        client.distribute(res);
    }
})

callback返回值

{
    rescode: 0, // 0 正确 401 鉴权失败 403 用户未授权 404 协议类型错误,协议过期 408 超时
    data: {}
}

server 使用

import { Server } from 'post-message-im'

const server = new Server({validator: () => {}})

server.on({
    type: '',
    callback: (err, res) => {
        // get data
        server.response(Object.assign({}, res, {data: data}))
    }
})

server.response('frameId', server.CONSTANTS.TYPE.SOME_SPECIFIC_TYPE, data)

Promisify

可以选择业界任意一个标准的promisify库,例如:

  • bluebird 模块里有 promisify 方法
  • es6-promisify 模块
  • ThinkJS 里的 promisify 方法

当然,也可以直接使用下面的示例代码

let promisify = (fn, receiver = null) => {
    return (...args) => {
        return new Promise((resolve, reject) => {
            fn.apply(receiver, [...args, (err, data) => {
                return err? reject(err): resolve(data);
            }]);
        });
    };
};

client.request = promisify(c.request, c);

client.request({
    type: '',
}).then((data) => {})

// 显式的callback参数优先级会更高,但不建议这么使用
client.request({
    type: '',
    callback: (err, data) => {}
}).then((data) => {})
0.2.1

4 years ago

0.1.12

4 years ago

0.1.11

5 years ago

0.1.10

5 years ago

0.1.9

5 years ago

0.1.8

5 years ago

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.2.0

5 years ago

0.1.0

5 years ago

0.0.19

6 years ago

0.0.18

6 years ago

0.0.17

6 years ago

0.0.16

6 years ago

0.0.15

6 years ago

0.0.14

6 years ago

0.0.13

6 years ago

0.0.12

6 years ago

0.0.11

6 years ago

0.0.10

6 years ago

0.0.9

6 years ago

0.0.8

6 years ago

0.0.7

6 years ago

0.0.6

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago