我正在实现具有长作业处理时间(在某些情况下为几分钟)的客户端服务器API。一些api调用很简短,可以立即响应,但双门轿跑车需要一些后端处理。我正在使用node.js作为Web服务器。我目前的实现方式如下-
客户端(浏览器)节点js 引擎
该引擎是处理每个作业(C++代码)的后端进程。所有的交互都是http。现在,传统上,我会将长作业实现为异步ajax / restful请求,将短作业实现为sync restful请求。
我将针对长时间的处理工作(处理大数据)进行状态更新-例如中间结果,完成百分比等。
我很喜欢WebSockets作为替代方案(而且我还比较陌生)。这是我的问题-
注意:-我现在不担心跨浏览器支持(尤其是旧版本)。
最佳答案
我已经实现了使用websocket在浏览器和C++后端之间进行通信的Client-Server API。我们使用的库是libwebsockets http://git.warmcat.com/cgi-bin/cgit/libwebsockets/
长期运行的命令和同时执行的命令在websocket上都运行良好。可以从客户端发送多个请求,并且服务器可以在就绪时进行响应,并且可以将响应发送回乱序(或将响应合并为单个响应)。
Ajax所需的超时和长轮询内容变得更简单,例如套接字断开时,服务器可以检测到客户端断开连接。
至于最佳实践,我的设计基于这些文章。
我们使用JSON编码消息。
如果您的服务器是node.js,则可以查看Socket.io。这抽象了通信层,可以根据可用的内容在ajax,websocket等之间进行选择。
关于c++ - 异步RestFul与Websocket,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16345507/