我正在实现一个具有较长作业处理时间(在某些情况下为几分钟)的客户端-服务器 API。一些 api 调用很短并且会立即响应,但是 coupe 需要一些后端处理。我使用 node.js 作为 Web 服务器。我目前的实施如下 -
客户端(浏览器)<-> 节点 js <-> 引擎
引擎是处理每个作业(C++ 代码)的后端进程。所有的交互都是http。现在,传统上我会将长作业实现为异步 ajax/restful 请求,将短作业实现为同步 restful 请求。
我将对长时间处理作业(处理大数据)进行状态更新 - 例如中间结果、完成百分比等。
我正在寻找 WebSockets 作为替代方案(而且我对它比较陌生)。这是我的问题-
- 我应该为长时间的工作而不是异步的restful api研究websockets(我希望避免处理客户端超时、长轮询等)吗?
- 将所有请求移至 websockets 怎么样(为什么还要打扰休息?)
- 一般来说,实现此架构的任何最佳实践。(以前,我从事的项目是将网络服务器和引擎之间的交互作为带有自定义命令的简单 TCP 连接。)
注意:- 我现在不担心跨浏览器支持(尤其是旧版本)。