我有一个网络应用程序,我需要用户能够看到他们的通知已经登陆。我希望通知图标在有新通知时更改状态。
基本上,我希望在API端点更新当前用户的状态和前端以更改其状态时进行监听。
我想过将该端点视为一个可观察的端点,将前端视为观察者,但我不知道这是否符合我的需要。
有什么想法吗?
答案 0 :(得分:2)
我建议使用Web套接字实现,例如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不在这里,所以让我们拭目以待......