【发布时间】:2019-08-27 21:16:58
【问题描述】:
我想使用 boost::beast 来读写 etcd。首先,我希望能够使用 boost beast 做these examples。它们很容易用 curl 完成。 Etcd 可以看作是一个键/值存储。使用boost::beast client example 可以轻松完成设置/获取(示例页面中的放置/范围)的功能。没有问题。
但是“看”,我不明白。根据docs 的说法,watch 是一个连续流,与其他会话不同,后者是在检索结果后立即终止的会话。 curl 示例显示了在手表仍处于活动状态时更改值和现场响应。我应该使用同一个流来执行与该手表相关的所有事情,包括停止它。
我的问题大致是:如何在 boost::beast 中实现这一点?
假设来自client example I submit ioc.run through a thread
std::thread t(&std::iocontext::run, &ioc);
t.detach();
现在我可以在主线程中完全控制客户端。我应该创建新的 http 请求并通过套接字对象在async_write 中提交它们吗?但是,如果我这样做,我将失去 boost::beast 的功能,即用漂亮的http::request<http::string_body> 包装 http 标头。我应该手动创建标题吗?还是我应该只发送带有某种行终止符的json 以指示消息已结束?通信协议是什么样的?
boost::beast 的例子会很棒。
【问题讨论】:
标签: c++ boost-asio json-rpc etcd boost-beast