npm 包 prmq 使用教程

阅读时长 5 分钟读完

简介

prmq 是一个方便前端开发者在项目中使用消息队列功能的 npm 包。它基于 pubsub-js 开发而成,增加了消息可靠性保证,支持在一个浏览器窗口或者同域名下多个窗口之间共享消息,以及消息处理函数的自动化注销等功能。

安装

该包可以使用 npm 安装:

使用方法

首先引入 prmq:

订阅和发布消息

使用 prmq 的最基本功能是订阅和发布消息。订阅消息可以有不同的主题,一个主题可以有多个消息订阅者,当有消息发布时,所有订阅了该主题的消息处理函数将会被调用。

执行上面的代码,可以看到控制台输出了 '收到一条新闻:这是一条新闻'

取消订阅消息

当一个组件销毁时,需要取消它对消息的订阅。prmq 提供了自动注销订阅的功能,只需要在订阅消息时将返回的订阅记录保存下来,在组件销毁时调用保存下来的注销函数即可取消订阅。

单个对象多个订阅者

在一个场景中,一个对象可能会被多个组件所订阅,使用普通的订阅方式需要为每个组件单独进行订阅注册。而 prmq 提供了 subscribeObj 方法,可以自动为一个对象的多个属性注册消息订阅。

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

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

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

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

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

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

执行上面的代码,可以看到控制台输出了 '新的消息列表:[ '这是一条新闻' ]'

进阶功能

除了基本的订阅和发布消息外,prmq 还提供了进阶的功能,包括消息可靠性保证、多窗口共享消息等。

消息可靠性保证

在消息发布时,prmq 默认是不会对该消息进行缓存或重复发送的,这在某些场景下可能会导致系统不稳定。因此 prmq 提供了消息保障的功能,可以确保收到的消息列表完整无误。

使用消息保障的方法是,在发布消息时传入第三个参数,它是一个用来基于消息内容生成 hash 值的函数。prmq 会根据生成的 hash 值来判断该消息是否已经收到,并作出相应的处理。

上面的代码中,第二次发布的消息是一条已经发布过的消息,但由于传入了 hash 函数,prmq 在 3 秒钟内只会输出一次 '收到一条新闻:这是一条新闻',而不会输出 '收到一条新闻:这是另一条新闻'

多窗口共享消息

在某些场景下,一个站点可能会有多个窗口打开同一个页面,这时需要在这些窗口之间共享消息。在使用 prmq 的场景中,一个窗口的环境和上下文信息与另一个窗口有区别,因此要实现多窗口共享消息,需要引入一个消息传递中心,即一个代理页面,所有窗口向它进行消息发布和订阅。

具体的使用流程示例:

在代理页面中进行消息中转:

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

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

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

在项目的各个窗口中订阅和发布消息:

需要注意的是,多窗口共享消息时依赖于代理页面,代理页面打开和关闭会影响所有窗口的消息传播,因此在使用时需注意处理。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005694981e8991b448e4c95

纠错
反馈