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