PWA 中 Web Push 通知的实现

阅读时长 6 分钟读完

随着 PWA 技术的成熟与普及,Web Push 通知也成为了一个广受欢迎的功能。PWA 的 Web Push 通知可使网站在未打开的状态下向用户发送实时通知,最大程度上提高用户体验。

本文将介绍 PWA 中 Web Push 通知的实现方法,包括如何在前端中生成一个 Push Subscription,如何将 Subscription 发送到后端服务,以及如何通过 Push 服务发送通知。

生成 Push Subscription

要使用 Web Push 通知,首先需要生成一个 Push Subscription。让我们看一下如何在前端中生成 Push Subscription。

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

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

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

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

上述代码将显示一个订阅窗口,用户可以选择是否订阅通知。一旦用户点击“允许”请求,代码将通过 PushManager 来订阅 Push Subscription,并将 Subscription 保存到浏览器中。

发送 Subscription 到后端

现在我们已经生成了 Push Subscription,需要将 Subscription 发送到后端服务。服务端可以使用该 Subscription 来推送消息给客户端。

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

上述代码将 Subscription 对象作为 JSON 串发送到服务器的 /subscribe 接口中。服务器需要将 Subscription 存储在数据库或缓存中,用于后续的消息推送。

发送 Web Push 通知

现在我们已经生成了 Push Subscription 并将其发送到服务器,下一步需要从服务器将 Push 消息发送到客户端浏览器。

在下面的代码中,我们将定义一个名为 sendPushNotification 的函数,该函数使用 Web Push 协议向客户端发送通知。

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

在 sendPushNotification 中,我们将 Subscription 对象及需要发送的数据打包成一个 JSON 对象,并发送到 /push 接口。服务器将使用该 Subscription 对象向客户端发送消息。

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

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

上述代码中,我们使用了一个名为 Web Push 的 JavaScript 库来实现消息的发送。使用库的第一步是设置 VAPID(Voluntary Application Server Identification)标识符,该标识符用于鉴别服务器和客户端之间的身份验证和通讯。

在发送通知的代码块中,我们从请求对象中获取 Push Subscription 和数据,并通过 Web Push 的 sendNotification 方法将消息发送给客户端。sendNotification 方法需要传递三个参数:Subscription 对象、消息内容以及通知选项(例如生存期、标题等)。

总结

在本文中,我们已经详细地介绍了 PWA 中 Web Push 通知的实现方式。我们从前端代码开始,生成 Push Subscription 并将其发送到后端服务,最后使用 Web Push 协议向客户端发送通知。希望通过本文的讲解,读者们能够理解 Web Push 通知的实现原理,并掌握使用 PWA 实现 Web Push 通知的技能。

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

纠错
反馈