【发布时间】:2017-06-08 18:16:03
【问题描述】:
我有一个 Web 应用程序,我需要用户能够看到他们的通知是否已经登陆。我希望通知图标在有新图标时更改其状态。
基本上,我想监听 API 端点何时为当前用户更新其状态,并在前端更改其状态。
我想把那个端点做成一个可观察的,把前端做成一个观察者,但我不知道这是否符合我的需要。
有什么想法吗?
【问题讨论】:
标签: javascript node.js push-notification
我有一个 Web 应用程序,我需要用户能够看到他们的通知是否已经登陆。我希望通知图标在有新图标时更改其状态。
基本上,我想监听 API 端点何时为当前用户更新其状态,并在前端更改其状态。
我想把那个端点做成一个可观察的,把前端做成一个观察者,但我不知道这是否符合我的需要。
有什么想法吗?
【问题讨论】:
标签: javascript node.js push-notification
我建议使用网络套接字实现,例如Socket.io。
尽管 Socket.io 有许多替代品,但它的主要优势在于它为旧版浏览器提供了多种备用方案。所以,例如如果 web 套接字不可用或不工作,它会尝试 AJAX 长轮询。这样,您甚至可以支持一次创建的浏览器,当时甚至没有人知道 Web 套接字是什么 - 但对您而言,API 保持不变。
如果您知道只需要处理现代浏览器,则可以使用更轻量级的替代方案,例如ws.
如果您正在寻找完全不同的东西,它完全基于 HTTP 并且不需要额外的协议,您可能会对HTML5 Server-sent events 感兴趣。它们工作得很好,但与 Web 套接字相比,它们不是双向的,它们是 currently not supported in IE and Edge。他们还有一些其他的缺点。例如,无法向 SSE 请求添加自定义标头。
对于 HTTP2,Web 套接字在未来还会产生多大的影响可能值得怀疑,尤其是考虑到诸如 Streams API 之类的东西即将到来的情况下。然后,您基本上可以使用纯 HTTP 解决所有问题,这也有一些优势。但是现在,Streams API 还不在这里,让我们拭目以待……
【讨论】: