Web Push 是一种可以在没有打开网站的情况下向用户推送通知的技术,提高了用户的留存率和用户体验,现在已成为许多网站必不可少的功能之一。现在,Web Push 已经可以在浏览器本地进行,这为开发者提供了更多的选择和自由。
Javascript 本地 Web Push 是一项新的技术,可以通过 ES9 中的一些新特性来实现。在本文中,我们将详细介绍如何使用 Javascript 实现本地 Web Push,并给出相应的示例代码。
什么是本地 Web Push?
在传统的 Web Push 技术中,推送通知需要从远程服务器发送。但是,本地 Web Push 却是针对用户本地使用的推送通知技术。本地 Web Push 通知是由 Web 应用程序直接生成和管理的,不需要向远程服务器发送请求。这种技术通常用于在 Web 应用程序内部跟踪应用程序状态,并向用户发送通知。
本地 Web Push 对于开发者来说有很多好处。首先,它使得开发者无需依赖第三方服务,就能够实现推送通知;其次,它使得开发者可以完全控制推送流程,可以让推送流程更加灵活和高效。
实现本地 Web Push 的关键
要实现本地 Web Push,需要用到 ES9 中的两个新特性:Async Iterator 和 Object.fromEntries。Async Iterator 支持异步迭代,可以在调用迭代器方法时立即获取多个异步响应。在本地 Web Push 中,它可以最大限度地减少处理时间。Object.fromEntries 则是用于将键值对转换为对象。
下面我们来看一下如何利用这两个特性在 Javascript 中实现本地 Web Push。
Javascript 本地 Web Push 的实现
我们将在下面的示例代码中逐步实现 Javascript 本地 Web Push。示例代码的最终效果是通过在浏览器窗口中单击按钮来触发本地 Web Push 通知。
- 创建名称为 notifications 的数组来存储通知:
let notifications = [];
- 定义一个异步函数,该函数将在点击按钮时调用。这个函数的作用是在本地创建一条新通知。
async function createNewNotification() { let newNotification = { id: uuidv4(), message: "New notification!" }; notifications.push(newNotification); }
在上面的代码中,我们使用 uuidv4 库来生成唯一的 id。
- 创建一个异步迭代器来遍历 notifications 数组,并在遍历时创建通知对象。我们将 notifications 数组作为对象传递给对象的 fromEntries 方法,该方法将映射键和值组成的数组,并返回一个包含键值对的对象。
-- -------------------- ---- ------- ----- --------- --------------------- - --- ---- ----- ------ -- -------------------------------------- -- ------ ----- - ----- - ------ -------------- ------ ------------------------- ----- - --- -------- - -- - -
- 对于本地 Web Push,需要使用 Service Worker 将通知发送到浏览器。在这个例子中,我们将创建一个 Service Worker,该 Service Worker 将处理通知和推送操作。注意,Service Worker 需要通过 HTTP 或 HTTPS 进行访问,因此我们需要将代码和 Service Worker 放在支持 HTTPS 的 Web 服务器上。
-- -------------------- ---- ------- ----------------------------- ----- -- - ----- --------------------- - ---------------------- ---------------- ------------- -------------------------------------- ----- ------------------------------------ ------------------------------------------- ---------------------------- --------------------------- -- - ------------- - --------------------------- -- ------------------------------ -- ---- --- ----- ------ ---------------------------------------- -- -------------------------------------- ----- ----- -- -- ---
- 最后,我们需要将 Service Worker 的代码放入一个 js 文件中,并在 HTML 页面中进行注册。我们可以使用以下 JavaScript 代码来注册 Service Worker:
if ('serviceWorker' in navigator) { navigator.serviceWorker.register('service-worker.js') .then(() => console.log('Service worker registered.')) .catch(err => console.error('Cannot register service worker', err)); }
- 在 HTML 页面中添加一个按钮,以触发创建新通知的函数:
<button onclick="createNewNotification()">Create notification</button>
总结
在本文中,我们介绍了如何使用 Javascript 实现本地 Web Push。通过 ES9 中的 Async Iterator 和 Object.fromEntries 特性,我们创建了一个在浏览器中实现本地 Web Push 的示例。这种实现方式不仅简单、灵活,而且没有任何的远程服务器依赖,可以让开发者完全控制推送流程。希望本文的内容对你有所启发,也希望你能够将这种技术应用到自己的 Web 应用程序中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/654de4ff7d4982a6eb742e49