React + axios 如何实现长轮询

Posted

技术标签:

【中文标题】React + axios 如何实现长轮询【英文标题】:How to implement long polling for React + axios 【发布时间】:2017-09-12 14:55:19 【问题描述】:

我正在使用 React + axios 从客户端与 API 对话。我是 javascript 的新手。

如何实现长轮询,以便在网页上获得近乎实时的更新?

当后端是 JSON REST API 时,是否有更好的方法在页面上进行实时更新?我应该考虑使用 WebSockets 还是服务器端事件或长轮询?

【问题讨论】:

相关答案:Long-polling vs websocket 和 Ajax vs Socket.io。对于网页的定期实时更新,我不知道轮询比连续 webSocket 或 socket.io 连接更有效的情况。 你标题里的问题和你最后问的问题不一样。您能否用一个问题更新帖子,以便有人可以尝试回答正确的问题。 【参考方案1】:

对于您的用例,还有另一种可能更好的方法:服务器发送事件。

简而言之,SSE 是从客户端到服务器的简单 GET 请求 - 除了服务器在处理完请求后不会关闭连接。相反,HTTP 连接保持打开状态,服务器能够多次向客户端写入数据,这些数据实时出现。

有关 SSE 与 Websockets 比较的更多信息,请阅读 Alex Recarey 的 answer 到 SO 中的“WebSockets vs. Server-Sent events/EventSource”。

【讨论】:

以上是关于React + axios 如何实现长轮询的主要内容,如果未能解决你的问题,请参考以下文章

gevent中如何实现长轮询

如何使用 socket.io 实现长轮询?

DeferredResult 如何实现长轮询?

如何在原生 JavaScript 和 node.js 中使用长轮询?

卡夫卡长轮询

使用 OkHttp3 和 ReactiveX Java 实现长轮询的正确方法