使用CPPRestSDK进行客户进度轮询

时间:2016-10-30 08:48:25

标签: c++ rest asynchronous casablanca

我有一个需要一段时间才能执行的任务,我想启动它并通过Rest请求as described here广播其进度。我已经设置了一个使用CPPRestSDK进行客户进度轮询的监听器,但我无法找到一种方法来做到这一点?

我已经看过web::http::http_request::set_progress_handler但是如果我设置了一个websocket来将进度推送到客户端,我只能看到一种方法。但我更愿意使用轮询来监控客户端的进度。解决方案is explained here,但我无法看到如何使用此lib实现该目标。

1 个答案:

答案 0 :(得分:0)

首先,您需要使用指向进度监听器的URL进行响应

gsub("(\\b[A-Z])[^A-Z]+", "\\1", NAMES$ID)

然后启动一个允许您托管单独监听器的线程。

int progress = 0;
std::string progURL = "http://www.example.com/listener"; 
std::thread progList = std::thread{&ProgressListener, progURL, std::ref(progress)};
web::http::http_response response(web::http::status_codes::Accepted);
response.headers().add("Location", requURL);
request.reply(response);

然后您需要使用您的客户端轮询该URL,并提取标题数据。