qicosmos / rest_rpc

modern C++(C++11), simple, easy to use rpc framework
MIT License
1.66k stars 365 forks source link

发布订阅的正确示例是怎样的? #17

Open LeoYang-Chuese opened 3 years ago

LeoYang-Chuese commented 3 years ago

发布订阅的正确示例是怎样的?

我是这样理解的,但貌似不对。关于这块的文档注释基本没有,示例代码对我而言有些晦涩,遇到问题挺抓瞎的。劳烦大大给讲解下。

// 客户端订阅数据。

rpc_client client("127.0.0.1", 9000);
// 启用自动重连。
client.enable_auto_reconnect();
// 启用自动心跳。
client.enable_auto_heartbeat();
client.connect();
// 订阅数据。
client.subscribe("key", [](person p) 
{
    std::cout << p.name << "\n";
});
// 服务端发布数据。

// 1.先定义person对象。
struct person {
    int id;
    std::string name;
    int age;

    MSGPACK_DEFINE(id, name, age);
};

rpc_server server(9000, std::thread::hardware_concurrency());
// 2.发布数据。
server.publish("key", p);
// 同步运行rpc服务,会阻塞当前线程,需异步调用run,或者直接使用asyc_run。
server.run();
qicosmos commented 3 years ago

见#12