java 物联网通信盒接口协议 物联网接口怎么写
一、接口分类:
1、通信模式分类:
paho.mqtt.c包含同步客户端、异步客户端两种
2、接口命名规范:
同步客户端API命名:MQTTClient*****
异步客户端API命名:MQTTAsync*****
二、同步接口说明:
1、MQTTClient_create()
该函数创建了一个用于连接到特定服务器,使用特定持久存储的MQTT客户端。
参数:
handle:指向MQTT客户端句柄的指针。句柄被成功从函数中返回的客户端引用所填充;
serverURI:以空结尾的字符串,其指定客户端将连接到的服务器。其格式为protocol://host:port。现在的(protocol)协议必须是tcp或ssl,而host可以指定为IP地址或域名。例如, 要使用默认 MQTT 端口连接到本地计算机上运行的服务器, 请指定为 tcp://localhost:1883。 localhost:主机名,可通过命令行,hostname 获取;
persistence_type:客户端所使用的持久类型。
MQTTCLIENT_PERSISTENCE_NONE-使用内存持久化。如果客户端运行的设备或系统出故障或关闭, 则任何正在运行的消息的当前状态都将丢失, 甚至在 QoS1 和 QoS2 中也可能无法传递某些消息;
MQTTCLIENT_PERSISTENCE_DEFAULT-使用默认的持久化机制(文件系统)。正在运行消息的状态被保存在持久存储中,以便在意外出现时对消息的丢失提供一些保护;
MQTTCLIENT_PERSISTENCE_USER-使用程序指定的持久化实现。使用这种类型,应用程序可对持久化机制进行控制,应用程序必须实现MQTTClient_persistence 接口。
persistence_context:如果应用程序使用的是MQTTCLIENT_PERSISTENCE_NONE持久化,该参数不使用,而且值应该设置为NULL。
对于MQTTCLIENT_PERSISTENCE_DEFAULT持久化,应该设置持久化目录的位置(如果设置为NULL,则使用工作目录作为持久化目录)。
使用MQTTCLIENT_PERSISTENCE_USER持久化,则将此参数指向有效的MQTTClient_persistence结构。
2、MQTTClient_setCallbacks()
该函数为特定的客户端创建回调函数。如果您的客户端应用程序不使用特定的回调函数,请将相关参数设置为NULL。 调用MQTTClient_setCallbacks()使客户端进入多线程模式。 任何必要的消息确认和状态通信都在后台处理,而不需要客户端应用程序的任何干预。
注意:在调用该函数时,MQTT客户端必须断开连接。(即先要调用该函数再连接客户端)。
参数:
handle:指向MQTT客户端句柄的指针。句柄被成功从函数中返回的客户端引用所填充;
context:指向任何应用程序特定上下文的指针。 上下文指针被传递给每个回调函数,以提供对回调中的上下文信息的访问;
cl:指向MQTTClient_connectionLost()回调函数的指针。 如果您的应用程序不处理断开连接,您可以将其设置为NULL。
ma:指向MQTTClient_messageArrived()回调函数的指针。 当您调用MQTTClient_setCallbacks()时,必须指定此回调函数。
dc:指向MQTTClient_deliveryComplete()回调函数的指针。 如果您的应用程序同步发布,或者您不想检查是否成功发送,则可以将其设置为NULL。
3、MQTTClient_connect()
此函数尝试使用指定的选项将先前创建的客户端连接到MQTT服务器。
参数:
handle:指向MQTT客户端句柄的指针。句柄被成功从函数中返回的客户端引用所填充;
options:指向有效的MQTTClient_connectOptions结构的指针。
4、 MQTTClient_subscribe()
此功能尝试将客户订阅到单个主题,该主题可能包含通配符。 此函数还指定服务质量。
参数:
handle:指向MQTT客户端句柄的指针。句柄被成功从函数中返回的客户端引用所填充;
topic:订阅的主题,可使用通配符。
qos:订阅的请求服务质量。
5、 MQTTClient_publishMessage()
此函数尝试发布一个消息到指定的主题,该主题可能包含通配符。
参数:
handle:指向MQTT客户端句柄的指针。句柄被成功从函数中返回的客户端引用所填充;
topicName:与信息相关的主题。
message:指向有效的 MQTTClient_message 结构的指针, 其中包含要发布消息的有效负载和属性。
deliveryToken:指向MQTTClient_deliveryToken的指针。当函数成功返回时,dt会被赋值为代表消息的token。如果程序中没有使用传递token,将其设置为NULL。
6、 MQTTClient_waitForCompletion()
客户端应用程序调用此函数来将主线程的执行与消息的完成发布同步。 被调用时,MQTTClient_waitForCompletion()阻塞执行,直到消息成功传递或已超过指定的时间。
参数:
handle:指向MQTT客户端句柄的指针。句柄被成功从函数中返回的客户端引用所填充;
dt:代表消息的MQTTClient_deliveryToken用来检测是否成功传递。传递token由发布函数MQTTClient_publish () 和 MQTTClient_publishMessage ()所产生。
timeout:等待的最大毫秒数。
三、异步接口说明:
1、MQTTAsync_create()
异步方式创建MQTT客户端,参数与同步API相似,这里略过
2、 MQTTAsync_setCallbacks()
设置相关回调函数,准备连接MQTT代理
3、 MQTTAsync_connect()
连接到消息代理.
4、 MQTTAsync_subscribe()
从MQTT代理处,订阅主题.
参数:
response: 响应参数结构,结构中包含相关的成功/失败回调函数。
5、MQTTAsync_sendMessage()
参数:
response,消息发布响应结构体,包含:成/败回调函数指针,用户参数传递。
四、错误码说明:
上一篇: api网关 协议转换(网关协议转换原理)