![]() |
1
2
在回答问题之前,要知道满足你的要求是说起来容易做起来难。为现有的基础结构实现这一点需要做大量的工作,如果您确实需要这样做,那么最好在服务器端使用现有的框架。 使用HTTP的方法HTTP不是此任务的正确协议类型。它是基于请求/响应的,并期望客户知道 什么时候? 它想请求信息。 如果必须使用HTTP,我只能想到两种方法。
选项1:
创建一个从不关闭的HTTP请求,即在Express中,服务器从不发送
选项2: 使用“轮询”——这意味着您经常询问服务器数据是否发生了变化。这可以在RXJS中通过以下方式实现:
这带来了一个巨大的缺点,即您的服务器(以及您的数据库)必须处理大量请求,并且您的网络流量会增加(尽管只发送小的包)。 然而 对于您来说,这可能是最容易实现的,因为几乎不需要更改任何内容来支持这一点。请注意,如果同时有太多的用户,服务器和数据库在某个时间点会关闭。 WebSockets的替代方法
浏览器只支持这么多的协议,所以对于您的需求只有有限的解决方案。一个是
网络套接字
.它基本上是浏览器上的TCP协议,但允许使用服务器的选项进行长时间的连接
推
向客户提供数据。甚至在RXJS中也有一个类,叫做
现在,这种方法比任何HTTP方法都具有更好的扩展性,但可能需要重新构建后端的大部分。如果你想更深入地研究这个问题, you can start here . 关于数据库的说明到目前为止,我们只讨论了网络通信,但是当然,您的数据库还必须支持可观察的API(除了轮询方法)。您需要查看特定数据库系统的文档,以确定它是否存在。 |
![]() |
Fahad Subzwari · 我不能用rxjs过滤器过滤记录? 2 年前 |
![]() |
Irakli · 我想以角度显示id相似的数据 2 年前 |
![]() |
gog · 如何观察rxjs中的属性更改? 6 年前 |
![]() |
jesdynf · 在继续之前,如何使角度拦截器延迟? 6 年前 |