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 套接字、长轮询、服务器发送事件和永久帧之间有啥区别?