我试图了解HTML5 Web Notifications API是否可以帮助我,但我无法理解它是如何工作的。
我希望user_a
能够在我的网络应用程序中向user_b
发送消息。
我希望user_b
收到有关此情况的通知。
网络通知 API 可以在这里提供帮助吗?它是否允许我专门针对用户(而不是通知所有人该网站已被updated_?我看不出如何为一个人创建警报。
谁能帮我多了解一点?
通知 API 是客户端的,因此它需要从另一个客户端技术获取事件。 在这里,阅读以下内容:http://nodejs.org/api/。 开玩笑。 Node.js+socket.io 可能是最好的方法,你可以向一个或所有客户端发出事件(广播)。 这是一个推送场景。 或者每个用户都可以从服务器中提取他们的通知。
HTML5 Web 通知 API 使您能够显示应用程序生成的桌面通知。你试图实现的是另一回事,Web 通知只是方案的一部分。
根据您管理应用程序的方式,出于聊天和消息传递目的,如 humbolight 所述,您应该查看 node.js.它将为您提供必要的后端来管理用户之间的发送和接收消息。
要通知用户他已收到消息,您可以选择在客户端进行 ajax 轮询。只需创建一个 javascript,每 x 秒对服务器执行一次 ping 操作,并检查是否有任何通知或新消息可供此用户使用。如果响应成功,则可以使用 HTML5 通知 API 向用户显示一条消息,说明他有新消息。长轮询的主要问题是服务器负载,即使没有消息也会使用带宽,如果用户数量为数千,那么您可以预期您的服务器总是忙于响应轮询呼叫。
另一种方法是使用服务器发送事件 API,在该 API 中,您将请求发送到服务器,然后服务器在通知/消息可用时立即将通知/消息推送到客户端。这减少了不必要的客户端>服务器轮询,在您的情况下似乎是更好的选择。要开始使用,您可以在以下位置查看一个好的教程HTML5Rocks
你要找的是WebSocket。 这项技术允许客户端(浏览器)打开与服务器的持久连接,并根据服务器的心血来潮从中接收数据,而不必"轮询"服务器以查看是否有任何新内容。
这里的其他答案已经提到了node.js,但Node只是在服务器上实现websockets的一个(尽管可以说是最好的)选项。 您可能还熟悉Ratchet,这是一个用于PHP的websocket服务器库,或者Python中的Tornado。
如何处理实时通信取决于您。 Websocket 只是可用于来回传递数据的底层技术。 客户端将相当容易,但在服务器端,您需要一种机制让 websocket 处理程序相互获取信息。 看看像ZeroMQ这样的工具来处理队列,以及Memcached或Redis来处理大量不需要永久存储的数据。