zhengxb 发表于 2021-11-8 09:03:17

主机创建MQTT客户端连接

//创建MQTT客户端连接实例,fnGetResRMS为接收返回数据方法
var devMQTT= new _MQTT(serverIPAddress + ":1883", fnGetResRMS);

//创建在线、掉线发送数据,当客户端在线时会主动往onlineTopic 发送onlineData 数据,当客户端不在线时会主动往onlineTopic 发送offlineData 数据
//与传统TCP连接不同的是,MQTT在掉线时,主题还能收到掉线的数据。
onlineTopic = "/maintain/room/online/" + metUUID + "/";                  //定义网关是否在线主题,固定格式
onlineData = JSON.stringify({ "udid": metUUID, "action": "online", "value": 1 });//在线发送数据,固定格式
offlineData = JSON.stringify({ "udid": metUUID, "action": "online", "value": 0 });   //不在线发送数据,固定格式
devMQTT.will_set(onlineTopic, onlineData, offlineData);

//订阅主题格式
devMQTT.subscribe("/maintain/room/master/" + metUUID + "/");         

//设置用户名密码
devMQTT.username_pw_set("mqtt@cmdb", "mqtt@passw0RD");
//设置ClientId设置
devMQTT.client_id_set("officexxxxxXXXXXXXXXXXXXXX00001");

//接收MQTT返回数据格式
function fnGetResRMS(topic, data) {
    //topic接收到的主题
    //接收到的主题对应的数据
}

//发送数据,可填参数(vTopic,vData,vQos,vRetain)格式组合如下
devMQTT.publish("/maintain/room/master/" + metUUID + "/","send data xxxxxxxx");   
devMQTT.publish("/maintain/room/master/" + metUUID + "/","send data xxxxxxxx",0);   
devMQTT.publish("/maintain/room/master/" + metUUID + "/","send data xxxxxxxx",0,true);   
vTopic主题
vData发送数据
vQos   不填默认为0至多一次,1至少1次,2至多一次
vRetain默认false不保留,true为保留最后一次,当MQTT发送时,另一个客户端不在线,后面在线订阅该主题时会收到最后一次保留的信息。



页: [1]
查看完整版本: 主机创建MQTT客户端连接