Push API 和服务器发送事件有啥区别?

Posted

技术标签:

【中文标题】Push API 和服务器发送事件有啥区别?【英文标题】:What is the difference between Push API and Server Sent Events?Push API 和服务器发送事件有什么区别? 【发布时间】:2015-06-02 08:36:29 【问题描述】:

从文档中我可以看出Push API 和Server Sent Events 都是半双工的,但是为什么要使用两种不同的技术来实现相同的功能呢? Push API 有什么更重要的吗?

【问题讨论】:

我也很困惑,但刚刚发现 push-api 团队提到了服务器发送事件。 github.com/w3c/push-api/issues/104#issuecomment-69745798 【参考方案1】:

即使您的站点未打开,Push API 也允许服务器向客户端发送通知,因为它依赖于服务工作人员。

只要用户在使用您的网站,SSE(或 WebSocket)就可以工作。

ServiceWorker Cookbook 的Web Push 部分中有一些示例(带有文档)可以帮助您更好地理解这一点。

【讨论】:

【参考方案2】:

您使用服务器发送事件直接连接到您的网站,这相当容易。

Web Push 技术要复杂得多,用户的浏览器与浏览器供应商的推送服务器保持一个连接,该服务器收集并传递来自网站的所有推送(多路复用)。由于消息通过第三方服务器,因此它们应该被加密。要使用 Push API,您(在客户端)获取特定于浏览器的供应商的端点 URL,生成公共加密密钥,并将其发送回您的服务器以供使用。然后在您的服务器上,当您想要推送时,您使用密钥加密消息并将其推送到端点。

General info on Web Push

Firefox 保持与推送服务的活动连接,以便在它打开时接收推送消息。

这是 Web Push 的主要优势 - 您可以在用户打开浏览器时发送通知,他不必访问您的网站。缺点是您需要获得用户对此订阅的许可。另一个缺点是它目前还远远没有被广泛使用supported。

Technical info on Push API

【讨论】:

可以说主要区别在于Push使用消息模型而SSE使用广播模型吗?

以上是关于Push API 和服务器发送事件有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Web 套接字、长轮询、服务器发送事件和永久帧之间有啥区别?

Firebase 云消息传递令牌和服务器密钥有啥区别?

Web API 和 Web 服务有啥区别?

事件驱动模型和反应器模式有啥区别? [关闭]

browserHistory.push() 和 context.router.push() 有啥区别

API 和 SOA 有啥区别