npm 包 sugo-client 使用教程

阅读时长 7 分钟读完

介绍

sugo-client 是一款前端的跨进程调用(RPC)工具,可以在多个页面或者iframe之间进行数据和函数的传输,非常适用于不同前端应用之间的通讯,也可以用于同一个应用中不同的iframe之间进行交互。本文主要介绍 sugo-client 的使用方法和注意事项。

安装

可以使用 npm 直接安装 sugo-client:

使用

sugo-client 分为两部分,在服务端实现RPC的API,在客户端调用这些API。

在服务端实现RPC API

在服务端(一般是web页面)需要安装 sugo-server 来监听客户端发送的请求。

服务端需要以下几个步骤:

  1. 引入 sugo-server 并创建 server 实例
  1. 实现 RPC handler
-- -------------------- ---- -------
--- ------- - -
  ----------- -------- -- -
    ------ ------ -------
  -
-

--------------------------- -- ------ -- -- -
  --------------------- --------
--

上面的代码中,getMessage 是一个RPC handler,在客户端调用 server.call('getMessage') 时,就会触发这个 handler。

  1. 启动 server

在客户端调用RPC API

客户端需要引入 sugo-client,并调用 server.call 来调用服务端的RPC handler。

上面的代码中:

  1. 创建 sugoClient 实例,并连接到服务端
  2. 连接成功后,取得服务端的 handler 实例,就可以使用 getMessage 方法调用服务端的 RPC handler 了。

注意事项

使用 sugo-client 时,需要注意以下的问题:

  1. sugo-server 和 sugo-client 的版本需要一致。
  2. handler 的方法需要返回 Promise,异步才能正常工作。
  3. 如果出现了意料之外的错误,sugo-client 可能会断开与服务端的连接,需要及时处理这种情况。

示例代码

下面是一个完整的例子,展示了如何在不同的 web 应用之间调用 serve1r 的 RPC handler:

在服务端建立一个名为 server1 的页面,运行 server.js 文件:

-- -------------------- ---- -------
-- ---------
--- ----- - ----------------
--- ---------- - --- --------------

--- ------- - -
  ----------- -------- -- -
    ------ ------ -------
  -
-

--------------------------- -- ------ -- -- -
  --------------------- --------
--

-----------------------

在客户端建立两个页面一个为 client1.html,一个为 client2.html,运行 client.js 文件:

-- -------------------- ---- -------
---- ------------ ---
--------- -----
------
------
  ----------------------
-------
------
  ----------- ----- ------------------------
  ------- -------------------------- ----------------

  ------- ---------------------------
-------
-------

---- ------------ ---
--------- -----
------
------
  ----------------------
-------
------
  ----------- ----- ------------------------
  ------- -------------------------- ----------------

  ------- ---------------------------
-------
-------
-- -------------------- ---- -------
-- ---------
--- ----------- - ----------------------
--- ---------- - --- ------------------------------------

---------------------------------- --------- -
  ----- --- - --- --------------------------
  ----- ---------- - ----------------------------------------

  ---------------------------------- --------- -
    ---------------------------------------------- - --------
  ---

  ------------------------------------------------- --------- -
    ---------------------------------------------- - --------
  --
--

-------- ------------ -
  --- ---------- - --- ------------------------------------

  ---------------------------------- --------- -
    ----- --- - --- --------------------------
    ----- ---------- - ----------------------------------------

    ---------------------------------- --------- -
      ---------------------------------------------- - --------
    ---

    ------------------------------------------------- --------- -
      ---------------------------------------------- - --------
    --
  --
-

在 client1.html 中点击 'get message' 按钮,可以触发 handler.getMessage 方法,client1 和 client2 都会收到服务端的消息。```js handler.onChangeMessage(clientType).then(function (message) { document.querySelector('#message').textContent = message; })

纠错
反馈