您使用服务器发送事件直接连接到您的网站,这是相当容易的。
Web推送技术要复杂得多,用户的浏览器与浏览器供应商的推送服务器保持一个连接,该服务器收集并提供来自网站的所有推送(多路复用)。由于消息通过第三方服务器传递,因此应该对其进行加密。要使用推送API,您(在客户端)需要获取特定于浏览器的供应商的endpointURL,生成公共加密密钥,然后将其发送回服务器以供使用。然后,在您的服务器上,当您想要推送消息时,使用密钥加密消息并将其推送到endpoint。
网络推送的一般信息
Firefox保持与推送服务的活动连接,以便在推送服务打开时接收推送消息。
这是Web推送的主要优点-用户打开浏览器时,您就可以发送通知,而不必访问您的站点。缺点是您需要获得用户对此订阅的权限。另一个缺点是,它目前远未得到广泛支持。
Push API的技术信息
推送API允许服务器向客户端发送通知,即使您的站点未打开,因为它依赖于服务人员。
只要用户正在使用您的站点,SSE(或WebSocket)就可以工作。
ServiceWorker Cookbook的Web Push
部分中有一些示例(带有留档),可以帮助您更好地理解这一点。
我还查看了https://www.html5rocks.com/en/tutorials/eventsource/basics/#disqus_thread设置ssses的教程,这似乎是我想象的HTTP流的设置方式。
http://www.html5rocks.com/en/tutorials/eventsource/basics/ 但是,我不明白一个重要的概念--是什么触发了服务器上导致消息发送的事件? 换句话说--在HTML5示例中--服务器只发送一次时间戳: 如果我建立一个实际的例子--例如,一个Facebook风格的“墙”或一个股票报价器,在这个例子中,每当某个数据发生变化时,服务器就会向客户机“推送”
当前,我已经在Express API上为服务器发送的事件设置了一个endpoint,当我从cmd调用endpoint时,使用http://localhost:3000/v1/devices,我得到了流,但当我使用新事件源从Vue应用程序调用endpoint时('http://localhost:3000/v1/devices“)但它只会继续加载,而不会流式传输任何数据。是否有我目前没有做的事情要做
概述 客户端代码 概述 建立连接 open事件 message事件 error事件 自定义事件 close方法 数据格式 概述 data:数据栏 id:数据标识符 event栏:自定义信息类型 retry:最大间隔时间 服务器代码 参考链接 概述 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。比如,每当收到新的电子邮件,服务器就向浏览器发送一个“
概述 客户端代码 概述 建立连接 open事件 message事件 error事件 自定义事件 close方法 数据格式 概述 data:数据栏 id:数据标识符 event栏:自定义信息类型 retry:最大间隔时间 服务器代码 参考链接 概述 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。比如,每当收到新的电子邮件,服务器就向浏览器发送一个“
4)服务器发送的事件使用keep-alive连接,但据我所知,SSE不使用流水线。相反,它们设法处理一个请求的多个响应,或者它们只是在下一个带有事件的响应到达时发送另一个请求。哪种猜测是正确的? 5)一个TCP连接意味着一个插座?一个插座意味着一个TCP连接?关闭/打开插座意味着关闭/打开TCP连接?