随着 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