我使用mosquitto c ++包装器发布消息/文件。
在我的测试中,我可以轻松发送包含文本的邮件,但如何发送文件?
我的发布商方法是:
bool Publisher::publish(const char* message) {
const int ret = mosquittopp::publish(NULL, topic_, strlen(message),
(uint8_t*) message);
/* custom log for mosquitto passing res and what I'm doing */
MosquittoLog::checkResult(ret, "sending message");
return (ret == MOSQ_ERR_SUCCESS);
}
我找到了this post,其中解释了如何使用python发布文件
在c ++中几乎一样吗?
如果是,我如何区分订阅者上的文件和纯文本?
void Subscriber::on_message(const struct mosquitto_message* message) {
/* pseudode
if message is file do A
else if plainText do B
*/
}
答案 0 :(得分:4)
概括地说:
发布文件
阅读文件
http://courses.cs.vt.edu/cs2604/fall02/binio.html#read
出版
我从mosquitto文档中了解的是,您是否可以在发布缓冲区之后立即销毁缓冲区,或者在发送MQTT消息之前是否需要暂停。
区分数据类型
在有效负载前面加上描述数据类型的标志。或者针对不同的数据类型使用不同的MQTT主题。如果失败了,根据您需要的空间效率,您可以将有效负载包装在protobuf,JSON或XML消息中。