不使用轮询,服务器如何向客户端浏览器发送推送通知?

10

我正在开发一个Web应用程序,希望在数据库发生更改时,服务器向特定的客户端发送响应(类似推送通知)。并且我希望这个通知被发送到客户端的浏览器中。我不想使用轮询。

我该怎么办? 我认为可以使用SSE,但我不是很清楚。
我想知道

  • 是否可能在没有客户端请求(无需轮询)的情况下向特定客户端发送响应?
  • 服务器将如何检测到特定客户端?

请帮助我。


正如你所说,SSE 似乎是正确的选择。在你提供的 HTML5 示例中,不清楚的是什么?同时也可以考虑一下这个2013年的 Sinatra 示例:http://html5hacks.com/blog/2013/04/21/push-notifications-to-the-browser-with-server-sent-events/ 和当前 W3C 推荐标准:http://www.w3.org/TR/eventsource/ - Ciro Santilli OurBigBook.com
可能是 有没有办法从 Web 服务器向浏览器推送数据? 的重复问题。 - Ciro Santilli OurBigBook.com
1个回答

5

你知道吗,我实际上想要什么?我想要像Facebook在页面右上方提供的那种新闻更新。有没有想过如何在不使用轮询的情况下实现这一点? - Rikin Thakkar
如果您有一个Web服务器,并且希望在应用程序/网站在浏览器中运行时接收通知,则可以使用WebSocket。 WebSocket不需要轮询。因此,当有可用数据或要通知连接的浏览器的更改时,您可以将它们推送出去。您了解WebSocket吗? - Gros Lalo
我知道WebSockets,但我想知道在我的情况下哪个选项更好,是WebSockets还是SSE? - Rikin Thakkar
很难确定,因为你的情况相当有限。如果只涉及接收通知,则我认为两者都同样有效。我不太了解SSE的服务器端实现,但对于Websocket来说,即使您从头开始构建东西,也很容易。此外,如果您的情况发展起来,那么应考虑诸如SSE是单向的,而使用Websocket则是双向的等约束条件。所以,视具体情况而定。 - Gros Lalo
没关系。不知为何,我感觉自己没有做多少帮助 :) - Gros Lalo
嗯,Web通知不是用于在浏览器外显示弹出窗口吗?你能给一个服务器向浏览器推送数据的工作示例吗? - Ciro Santilli OurBigBook.com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接