mosquitto库回调函数
时间: 2023-11-21 10:56:26 浏览: 77
mosquitto库提供了一些回调函数,以便在特定事件发生时执行自定义代码。其中一个回调函数是消息回调函数,它在接收到订阅主题的消息时被调用。下面是一个简单的示例,演示如何使用mosquitto库的消息回调函数:
```c
#include <mosquitto.h>
#include <stdio.h>
void on_message(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message)
{
printf("Received message: %s\n", (char *)message->payload);
}
int main()
{
struct mosquitto *mosq = NULL;
int rc;
mosquitto_lib_init();
mosq = mosquitto_new("example-subscriber", true, NULL);
if(!mosq){
fprintf(stderr, "Error: Out of memory.\n");
return 1;
}
mosquitto_message_callback_set(mosq, on_message);
rc = mosquitto_connect(mosq, "localhost", 1883, 60);
if(rc != MOSQ_ERR_SUCCESS){
fprintf(stderr, "Error: Could not connect to broker. rc=%d\n", rc);
return 1;
}
mosquitto_subscribe(mosq, NULL, "example/topic", 0);
mosquitto_loop_forever(mosq, -1, 1);
mosquitto_destroy(mosq);
mosquitto_lib_cleanup();
return 0;
}
```
在上面的示例中,我们定义了一个名为on_message的回调函数,它在接收到订阅主题的消息时被调用。我们使用mosquitto_message_callback_set()函数将此回调函数与mosquitto实例相关联。然后,我们连接到代理并订阅一个名为“example/topic”的主题。最后,我们使用mosquitto_loop_forever()函数开始循环以接收消息。