【发布时间】:2020-12-17 18:51:35
【问题描述】:
我正在构建的应用程序涉及将视频帧发送到服务器进行处理。我正在使用 Axios 向服务器发送 POST 请求。我打算每秒发送大约 3-5 帧(POST 请求)。我需要在上一个请求完成后发送一个,因为下一个请求的请求正文中有数据,这取决于上一个请求的响应。
我尝试循环运行它,但不会这样做,因为下一个在前一个完成之前开始。在当前代码中,我有这样的东西-
const fun = () => {
axios.post(url,data)
.then((res) => {
// process the response and modify data accordingly
// for the next request
})
.finally(() => fun());
};
这样我就能够不断地实现一个又一个的请求。但我无法控制每秒发送的请求数。有什么办法可以限制每秒请求的数量最多为 5 个?
附加信息:我将它用于一个网络应用程序,我需要将网络摄像头视频帧(作为数据 URI)发送到服务器进行图像处理,然后将结果返回给客户端。我希望限制请求的数量以减少我的应用程序消耗的互联网数据,因此希望每秒最多发送 5 个请求(最好是均匀分布的)。如果 Axios POST 请求为此目的有更好的方法,请提出建议:)
【问题讨论】:
-
只要我的 2 美分,这听起来像是使用 websockets 的一个很好的例子,如果后端支持的话。
-
你看过瓶颈吗? npmjs.com/package/bottleneck
-
@VladimirBogomolov 我知道我可以使用 websockets。只是想知道我的方法是否有任何缺点或缺陷?我在后端使用python和flask,所以可能支持websockets
-
@Ak47 websockets 的优点是您可以在没有经常握手的情况下来回发送数据,这通常是每个 post/get 请求所必需的。打开 websocket 通道流式传输数据后,数据非常简单,后端处理 websocket 数据的成本比连续发布请求要低。
标签: javascript axios httprequest synchronous