我是PubNub API的新手,根据PubNub C ++ SDK中的示例,我必须将订阅放在循环中以持续获取消息。
// Sync
void subscribe(pubnub::context &pn) {
enum pubnub_res res;
for (;;) {
res = pn.subscribe("my_channel").await();
if (PNR_OK == res) {
std::vector<std::string> msg = pn.get_all();
for (std::vector<std::string>::iterator it = msg.begin(); it != msg.end(); ++it) {
std::cout << *it << std::endl;
}
} else {
std::cout << "Request failed" << std::endl;
break;
}
}
}
对我来说没什么意义。通常我们只需要订阅一次,然后我们可以继续收到消息?在我的用例中,我还确认我必须订阅我的频道,收到消息,然后再次订阅该频道以获取下一条消息。为了不断收到消息,我必须继续订阅。但那么在我的订阅之间到达的消息呢?他们会迷路吗?
我很困惑......非常感谢你的帮助!
道
答案 0 :(得分:0)
PubNub C/C++ SDK与其他SDK的不同之处仅在于这些语言的工作方式。您订阅,您立即获得成功,然后再次订阅。收到消息后,您再次订阅。如果在订阅超时结束时(大约5分钟)没有收到任何消息,则再次订阅。这就是所有其他SDK的工作方式,但他们会自动完成。
此处的代码段,但在上面的SDK文档链接中有更多内容。
pubnub_subscribe(ctx, "my_channel", NULL);
pbresult = pubnub_await(ctx);
if (PNR_OK == pbresult) {
char const *message = pubnub_get(ctx);
while (message != NULL) {
message = pubnub_get(ctx);
}
}