您如何从不支持服务器发送事件的服务器获取接近实时的数据?

How would you get near real-time data from a server that does not support server sent events?

我们正在构建一个需要为某些数据调用 API 的应用程序,但我们调用的 API 不支持 "pushing" 或服务器发送的事件。那么,获得至少接近实时数据的最佳方式是什么?

根据我的研究,短轮询似乎是最好的方法,但我很好奇是否有 different/better 方法来解决这个问题。

考虑到您当前的限制,快速轮询可能是最容易实施的解决方案。您成为 "real time" 的能力取决于民意调查 window 和应用程序能够足够快地 return 结果。还有一个风险是您正在使用大量 API 请求访问该服务。

由于您可以访问基础数据库,因此您可能还需要考虑向数据库添加触发器。即使是将 ID 或密钥 suitable 与 API 一起使用的简单触发器调用带有时间戳的 table 然后让您轮询 table 以获取您的 real-time 事件然后使用 ID 调用 API 以获取事件详细信息。某些数据库可能允许触发器进行系统调用或通过网络发送消息。添加数据库触发器可能比添加新的应用程序功能更省力,并且比直接轮询更 "push"。

如果没有有关所涉及的应用程序、APIs 和数据库的更多详细信息,很难提供具体的答案。

解决方法的工作量可能超过添加适当事件系统的工作量。