我使用内部AngularJS SPA,基于REST,问题是一些REST请求持续很长时间(~5-10秒)。
它是脊椎动物,但这与它无关-服务器需要从不同的源获取大量数据,并在响应前一起计算数据。
很好的解决方案是向用户显示请求状态,下面是WebSockets。
向用户显示请求状态的示例
但也有很多问题。
目前尚不清楚如何获取哪个API用户发送通知其状态的请求。可能的解决方案是拥有字典“API客户端”--“Websocket连接”,但是它可以在每一个重新连接上爆炸,并导致内存泄漏。不是吗?
也许解决方案是将整个REST转换为Websockets。但看起来这里有很多工作要做,但我仍然需要重新发明缓存之类的东西。
从任何角度看都是一团糟。这里有什么更好的解决方案?
发布于 2016-09-30 09:13:44
最好同时提供REST和Websocket,这样web页面就可以使用websocket和自动化客户端,而不需要websocket支持,仍然可以使用API。您可以异步处理这些请求,并使用REST异步模式。
休息:
HTTP 202 Accepted头的Location返回给提供任务状态的队列端点/queue/<taskid>。
Location标头中指示的端点上轮询此类处理的状态。HTTP 202 Accepted。
HTTP 303 See Other头的Location。Websocket:
Location头中获取任务id,或者只需在另一个标头中提供任务id。https://stackoverflow.com/questions/39768548
复制相似问题