Appearance
浏览器消息推送
本节目标:理解“浏览器消息推送”的核心思路,并能把它用于实际开发或面试表达。 浏览器消息推送,也称为 Web 推送通知,是一种能让网站向用户即时发送信息的技术,即使用户没有打开该网站的页面。这种技术主要依赖于浏览器的 Service Worker 和 Push API。下面详细介绍其工作原理:
注册 Service Worker: Service Worker 是一种在浏览器背后运行的脚本,能够在页面未打开的情况下接收消息。首先,网站需要注册一个 Service Worker,这通常在用户同意接收通知后进行。Service Worker 负责监听来自推送服务的消息,并决定如何响应这些消息。
用户订阅通知: 用户需要订阅通知,这通常通过显示一个弹窗让用户选择是否希望从网站接收通知。如果用户同意,浏览器会生成一个推送订阅,其中包括用于向该用户发送消息的唯一标识符(即订阅端点 URL)和一些密钥。
发送订阅到服务器: 订阅信息被发送到网站的后端服务器,并存储起来。当需要向用户发送通知时,后端服务将使用这些信息。
使用推送服务发送通知: 当网站想要发送一条通知时,它的服务器会向相应的推送服务(如谷歌的 FCM、苹果的 APNs 或其他)发送一个请求,包括订阅的端点 URL 和通知的详细信息。推送服务随后将这条信息传递给正确的浏览器。
Service Worker 接收通知: 用户的浏览器收到来自推送服务的消息后,会激活对应的 Service Worker,Service Worker 通过
push事件监听器接收到这个消息。展示通知: Service Worker 处理
push事件,并使用浏览器的通知 API 展示一条通知。这个通知会在用户的设备上显示,即使他们当前没有打开发送通知的网站。交互和反馈: 用户可以与通知进行交互(如点击),这将触发 Service Worker 中的
notificationclick事件。网站可以根据需要处理这些交互,例如打开一个新标签页或执行其他动作。
整个流程实现了即使在网站未打开的情况下,也能将信息实时传达给用户。这种技术广泛用于新闻更新、聊天应用、邮件通知等场景。
