【发布时间】:2013-04-27 01:34:54
【问题描述】:
我正在实现一个具有较长作业处理时间(在某些情况下为几分钟)的客户端-服务器 API。一些 api 调用很短并且会立即响应,但是 coupe 需要一些后端处理。我使用 node.js 作为 Web 服务器。我目前的实现如下 -
客户端(浏览器)节点js 引擎
引擎是处理每个作业(C++ 代码)的后端进程。所有的交互都是http。现在,传统上我会将长作业实现为异步 ajax/restful 请求,将短作业实现为同步 restful 请求。
我将更新长时间处理作业(处理大数据)的状态 - 例如中间结果、完成百分比等。
我正在寻找 WebSockets 作为替代方案(我对它比较陌生)。这是我的问题 -
- 我是否应该使用 websockets 而不是异步 restful api(我希望避免处理客户端超时、长轮询等)?
- 将所有请求转移到 websockets 怎么样(为什么还要打扰休息?)
- 一般来说,实现此架构的任何最佳实践。 (以前,我从事的项目是将网络服务器和引擎之间的交互作为使用自定义命令的简单 TCP 连接。)
注意:- 我现在并不担心跨浏览器支持(尤其是旧版本)。
【问题讨论】:
-
就像下面建议的那样,nodejs 与使用 socket.io 的 websockets 配合得很好。如果浏览器不支持 websockets 它属于另一个协议,但仍然有效。我认为这比寻找 c++ 解决方案更容易。