MQTTClient_setCallbacks()函数

简介: MQTTClient_setCallbacks()
int MQTTClient_setCallbacks ( MQTTClient handle,
void *  context,
MQTTClient_connectionLost cl,
MQTTClient_messageArrived ma,
MQTTClient_deliveryComplete dc 
)

此函数为特定客户端设置回调函数。如果客户端应用程序不使用特定回调,请将相关参数设置为 NULL。调用 MQTTClient_setCallbacks() 会将客户端置于多线程模式。任何必要的消息确认和状态通信都在后台处理,无需客户端应用程序的任何干预。有关详细信息,请参阅异步与同步客户端应用程序。

注意:调用此函数时,必须断开 MQTT 客户端的连接。

1.成功调用 MQTTClient_create() 的有效客户端句柄。

2.指向任何特定于应用程序的上下文的指针。上下文指针传递给每个回调函数,以提供对回调中上下文信息的访问。

3.指向 MQTTClient_connectionLost() 回调函数的指针。如果应用程序不处理断开连接,则可以将其设置为 NULL。

这是一个回调函数,当从服务器收到断开连接数据包时将调用该函数。这仅适用于 MQTT V5 及更高版本。

指向最初传递给 ::MQTTAsync_setDisconnected() 的上下文值的指针,该值包含任何特定于应用程序的上下文

断开连接时收到的 MQTT V5 属性(如果有)。

断开连接时收到的 MQTT V5 原因码。目前,原因始终设置为 NULL。

4.指向 MQTTClient_messageArrived() 回调函数的指针。调用 MQTTClient_setCallbacks() 时必须指定此回调函数。

这是一个回调函数。客户端应用程序必须提供此函数的实现才能启用消息的异步接收。该函数通过将其作为参数传递给 MQTTClient_setCallbacks() 来注册到客户端库。当从服务器收到与客户端订阅匹配的新消息时,客户端库将调用它。此函数在与运行客户端应用程序的线程不同的线程上执行。


指向最初传递给 MQTTClient_setCallbacks() 的上下文值的指针,该值包含任何特定于应用程序的上下文。

与收到的消息关联的主题。

主题的长度(如果主题名称中还嵌入了一个空字符),否则主题 Len 为 0。如果 topicLen 为 0,则 strlen(topicName) 返回的值是可以信任的。如果 topicLen 大于 0,则可以通过访问 topicName 作为长度为 topicLen 的字节数组来检索完整的主题名称。

收到的消息的MQTTClient_message结构。此结构包含消息负载和属性。

5. 指向 MQTTClient_deliveryComplete() 回调函数的指针。如果应用程序同步发布,或者不想检查是否成功传递,则可以将其设置为 NULL。


这是一个回调函数。客户端应用程序必须提供此函数的实现,以启用消息传递的异步通知。该函数通过将其作为参数传递给 MQTTClient_setCallbacks() 来注册到客户端库。客户端应用程序向服务器发布消息后,客户端库将调用它。它表示已完成对所请求服务质量的必要握手和确认(请参阅 MQTTClient_message.qos)。此函数在与运行客户端应用程序的线程不同的线程上执行。注意:在 QoS0 上发布消息时不调用 MQTTClient_deliveryComplete()。

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
传感器 网络协议 物联网
Linux MQTT通信:实现轻量级物联网传输协议
MQTT(Message Queuing Telemetry Transport)是一种轻量级的物联网传输协议,专门设计用于低带宽、不稳定网络环境下的传感器和物联网设备通信。本文将深入探讨Linux环境下如何实现MQTT通信,介绍MQTT协议的基本原理、常用MQTT库以及如何在Linux系统中编写MQTT客户端和服务器端程序。
1873 0
|
监控 物联网 Windows
MQTT常见问题之mqtt自动断开了连接如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
物联网 Java Linux
Linux安装与配置Eclipse Paho库:实现MQTT通信
Eclipse Paho是一个开源的MQTT(Message Queuing Telemetry Transport)实现,提供了多种编程语言的客户端库,包括C、C++、Java、Python等。在Linux系统中,通过安装和配置Eclipse Paho库,我们可以方便地实现MQTT通信功能。本文将详细介绍在Linux系统中安装和配置Eclipse Paho库的步骤,以便于开发者在物联网项目中使用MQTT协议进行通信。
2162 0
|
消息中间件 物联网
MQTT常见问题之mqtt 报 MqttException:客户机未连接如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
物联网 测试技术 网络性能优化
MQTT常见问题之收不到MQTT消息如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
机器学习/深度学习 移动开发
解决mqtt连接报Connection lost (32109) - java.lang.IllegalArgumentException: Invalid UTF-8 char: [a]错误问题
最近生产环境在向mqtt客户端发布数据时反复出现一会断开一会连接错误,捕获的异常是java.lang.IllegalArgumentException: Invalid UTF-8 char: [a]。尝试各种方式都未找到问题的原因,最后在检查发送主题topic的时候发现所发送mqtt客户端的topic的结尾包含了换行符,最终才将问题得以解决。
6058 0
解决mqtt连接报Connection lost (32109) - java.lang.IllegalArgumentException: Invalid UTF-8 char: [a]错误问题
|
C语言
MQTT交叉编译(海思v300 arm-hisiv300-linux-):openssl、paho.mqtt.c、paho.mqtt.cpp
MQTT交叉编译(海思v300 arm-hisiv300-linux-):openssl、paho.mqtt.c、paho.mqtt.cpp
1187 0
MQTT交叉编译(海思v300 arm-hisiv300-linux-):openssl、paho.mqtt.c、paho.mqtt.cpp
|
存储 网络协议 网络安全
MQTTClient_create函数
MQTTClient_create函数
688 0