如何实现推送通知跨浏览器?

我有一个Web应用程序,我需要用户能够看到他们已经登陆的通知。 我想让通知图标在有新的时候改变它的状态。

基本上,我想听API时,API端点更新它的状态为当前用户和前端改变它的状态。

我想把端点作为一个观察者,把前端作为观察者,但我不知道这是否符合我的需要。

有任何想法吗?

我build议使用一个networking套接字的实现,如Socket.io 。

虽然Socket.io有许多select,但它的主要优点是它为旧版浏览器提供了多种后备function。 所以,例如,如果networking套接字不可用或不工作,它会尝试AJAX长轮询。 这样,您甚至可以支持一次创build的浏览器,甚至没有人知道什么是networking套接字 – 但对您来说,API保持不变。

如果你知道你只需要处理现代浏览器,你可以使用更轻量级的select,例如ws 。

如果您正在寻找完全不同的,完全基于HTTP并且不需要额外协议的东西,那么您可能对HTML5 Server发送的事件感兴趣。 他们的工作很好,但与networking套接字形成鲜明对比,它们不是双向的, 目前在IE和Edge中不支持 。 他们也有一些其他的缺点。 例如,将自定义标头添加到SSE请求是不可能的。

对于HTTP2,可能会有疑问的是,未来networking套接字将会有多大的影响,特别是如果考虑到诸如Streams API的问题。 那么,你基本上可以用纯HTTP来解决所有的问题,这也有一些好处。 但现在,Streams API不在这里,所以我们拭目以待…