Web Push通知怎么实现?2026网站消息推送与浏览器通知开发指南
2026-08-27 16 0
Web Push通知是什么?
Web Push是现代网站实现浏览器消息推送的一套标准技术。与传统轮询不同,网站不需要一直保持页面打开,也可以在用户授权后接收服务器发送的推送消息。Push API负责从服务器接收推送数据,Service Worker负责后台处理Push事件,而Notifications API则负责把消息显示为系统通知。当前Push API已经得到主流浏览器较广泛的支持,但具体通知能力仍会受到浏览器、操作系统和权限策略影响。
典型应用场景包括网站新文章提醒、订单状态变化、聊天消息、价格提醒、系统公告以及PWA应用通知等。
Web Push的工作原理
Web Push并不是简单地调用一个JavaScript函数就完成推送,而是由浏览器、Service Worker、网站服务器和Push Service共同完成。
首先,网站通过HTTPS运行并注册Service Worker,然后向用户请求通知权限。用户允许后,浏览器通过PushManager.subscribe()创建一个PushSubscription,其中包含推送端点以及相关加密信息。网站服务器保存该订阅信息,需要发送消息时,将加密后的数据提交给对应Push Service。浏览器收到消息后启动Service Worker并触发push事件,最后通过showNotification()显示通知。
因此整个流程可以概括为:用户授权 → Service Worker注册 → Push订阅 → 保存Subscription → 服务端发送 → Service Worker接收 → 浏览器显示通知。
前端如何实现浏览器通知?
首先注册Service Worker:
const registration =
await navigator.serviceWorker.register('/sw.js');
const permission = await Notification.requestPermission();
if (permission === 'granted') {
const subscription =
await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: vapidPublicKey
});
await fetch('/api/push/subscribe', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(subscription)
});
}
实际项目中建议让subscribe()发生在用户主动点击按钮等操作之后,而不是页面加载后立即弹出授权窗口。现代浏览器越来越强调用户手势与通知权限之间的关联,这也能降低用户拒绝通知的概率。
Service Worker中的核心代码则比较简单:
self.addEventListener('push', event => {
const data = event.data?.json() ?? {};
event.waitUntil(
self.registration.showNotification(
data.title || '网站通知',
{
body: data.body || '你有一条新消息',
icon: '/icon.png',
data: { url: data.url || '/' }
}
)
);
});
self.addEventListener('notificationclick', event => {
event.notification.close();
event.waitUntil(
clients.openWindow(event.notification.data.url)
);
});
通过showNotification()创建的持久通知属于Service Worker通知,即使原来的网页标签页已经关闭,也能够处理通知交互。
服务器端如何发送Web Push?
生产环境通常使用VAPID密钥对标识应用服务器,并借助Node.js的web-push等成熟库发送消息。服务器需要保存每个用户的PushSubscription,并将其与用户账号、设备或浏览器建立对应关系。
发送时,服务器将通知标题、正文、跳转地址等数据组织成Payload,再发送到Subscription对应的Endpoint。Push消息本身采用加密机制传输,因此开发者不能把Subscription Endpoint当成普通公开URL处理。MDN特别提醒,Endpoint本身具有向应用发送推送所需的能力,应妥善保护。
对于大型网站,还应该考虑订阅失效、用户取消授权、重复订阅、批量推送、失败重试和过期Endpoint清理等问题。
2026年开发Web Push需要注意什么?
首先是HTTPS。Notifications API属于安全上下文能力,正式网站应使用HTTPS部署。
其次不要在用户首次打开网站时强制弹出通知授权。更合理的方式是在用户完成注册、订阅内容或明确点击“开启通知”之后再请求权限。
另外,Push和Notification是两个不同概念:Push API解决消息如何到达浏览器,Notifications API解决消息如何显示给用户。Service Worker则是两者之间的重要桥梁。
最后需要做好权限拒绝和浏览器兼容处理。即使Push API本身已经具有较好的跨浏览器支持,Notifications API仍存在兼容性差异,因此上线前应该针对Chrome、Edge、Firefox以及目标移动浏览器分别测试。
Web Push适合哪些网站?
对于新闻资讯、博客、电商、在线工具、SaaS、社区和PWA应用而言,Web Push可以成为一种低成本的用户召回渠道。相比邮件通知,它不需要用户打开邮箱。相比轮询,它也不需要网页持续运行。
如果2026年正在开发网站消息系统,推荐采用Service Worker + Push API + Notifications API + VAPID这一标准架构,并将订阅管理、权限状态、失效订阅清理和通知频率控制纳入后端设计。这样既能实现实时网站消息推送,也能为后续PWA、离线应用和用户运营功能留下扩展空间。