Web通知(HTML5) - 它是如何工作的?

时间:2013-10-31 09:40:22

标签: web-notifications

我正在尝试了解HTML5 Web Notifications API是否可以帮助我,但是我对它的运作方式不太了解。

我希望user_a能够在我的网络应用中发送user_b条消息。

我希望user_b收到此通知。

网络通知API可以在这里提供帮助吗?它是否让我专门针对用户(而不是通知每个人该网站已更新_?我看不出如何为一个人创建提醒。

任何人都可以帮我理解一点吗?

3 个答案:

答案 0 :(得分:1)

通知API是客户端,因此需要从另一个客户端技术获取事件。在这里,请阅读:http://nodejs.org/api/。开玩笑。 Node.js + socket.io可能是最好的方式,你可以向一个或所有客户端发送事件(广播)。这是推动情景。或者每个用户都可以从服务器中提取通知。

答案 1 :(得分:0)

HTML5 Web Notifications API使您能够显示应用程序生成的桌面通知。 您要实现的目标是另一回事,网络通知只是您方案的一部分。

根据您管理应用程序的方式,以及像humbolight所述的聊天和消息传递目的,您应该查看node.js.它将为您提供必要的后端来管理用户之间的发送和接收消息。

要通知用户他已收到消息,您可以选择在客户端进行ajax轮询。 只需创建一个每隔x秒ping一次服务器的javascript,并检查该用户是否有可用的通知或新消息。 如果响应成功,那么您可以使用HTML5通知API向用户显示他有新消息的消息。 长轮询的主要问题是服务器负载和带宽使用,即使没有消息,如果用户数量为千,那么您可以期望服务器始终忙于响应轮询呼叫。

另一种方法是使用服务器发送事件API,您可以在其中向服务器发送请求,然后服务器在客户端可用时立即将通知/消息推送到客户端。 这减少了不必要的客户端 - >服务器轮询,在您的情况下似乎更好的选择。 要开始,您可以查看一个好的教程 HTML5Rocks

答案 2 :(得分:0)

您正在寻找的是WebSocket。它是一种技术,它允许客户端(浏览器)打开与服务器的持久连接,并在服务器上随心所欲地从服务器接收数据,而不必进行"轮询"服务器,看看是否有新的东西。

此处的其他答案已经提到node.js,但Node只是在服务器上实现websockets的一个(尽管可以说是最好的)选项。您可能也熟悉Ratchet,这是一个用于PHP的websocket服务器库,或者是Tornado,它位于Python中。

您如何处理实时通信取决于您自己。 Websockets只是您可以用来来回传递数据的基础技术。客户端这将是相当容易的,但在服务器端,您需要一个websocket处理程序的机制来获取彼此的信息。查看ZeroMQ等工具来处理队列,MemcachedRedis来处理不需要永久存储的大量数据。