要使用MQTT協(xié)議,何使(╬ ò﹏ó)您需要(yao)遵循以下步驟:
(圖片來(lái)源??網(wǎng)絡(luò ),何使侵刪)1、何使引入M(╯°□°)╯︵ ┻━┻QTT庫(′▽?zhuān)?)
2、何使設置MQTT服??務(wù)器地址和端口
3、何使創(chuàng )建MQTT客戶(hù)端對象
4、何使連接到Mヾ(?■_■)ノQTT服務(wù)器
5、何使訂閱主題
6、何使發(fā)布消息
7、何使處理接收到的何使消息
8、斷開(kāi)(kai)連接
下面是何使一個(gè)詳細的示例:
1、引入M(???)QTT庫(//ω//)
您需要在HTML文件中引入一個(gè)MQTT庫,何(??ヮ?)?*:???使例如Paho MQTT JavaScript庫,何使您可以從官方網(wǎng)站下載并引入庫文件:https://www.paho.mqtt.org/javascri??pt/index.html
在HTML文件中添加以下代碼:
<script src="path/to/pah(?????)omqtt.js"></script>
2、何使設置MQTT服務(wù)器地址和端口
接下來(lái),何使您需要設置MQTT服務(wù)器的地址和端口,這些信息(╬?益?)通常由您的MQTT服務(wù)提供商提供。
const mqttServer = "your_mqtt_server_address";const mqttPort = your_mqtt_server_port;
3、創(chuàng )建MQTT??客戶(hù)端對象
創(chuàng )建一個(gè)MQTT客戶(hù)端對象,用于連接到MQTT服務(wù)器并處理消息。
const clientId = "your_client_id"; // 可選,用于標識客戶(hù)端的唯一IDconst options = { keepalive: 30, // 保持連接的時(shí)間間隔,單位為秒};con(′?`*)st mqttClient = new Paho.MQTT.Client(mqttServer, mqttPort, clientId);4、連接到MQTT服務(wù)器
使用connect??方法連接到MQTT服務(wù)器,您需要提供一個(gè)回調函數來(lái)處理連接成功或失敗的情況??。
mqttClient.onConnectionLost = onConnectionLost; // 處理連接丟失??的情況mqttClient.onMessageArrived = onMessageArrived; // 處理接收到的消息mqttClient.connect({ onSuccess: onConnect }); // 連接成功時(shí)的回調函數使用subscribe方法訂閱您感興趣的主題,當該主題收到消息時(shí),將調用onMessageArrived回調函數(′_`)。
function onConnect() { console.log("(′?_?`)已連接到MQTT服務(wù)器"); mqttClient.subscribe("yo??ur_topic"(???), { qos: 1 }); // qos: 1表示至少一次傳遞,確保消息到達接收者}6、發(fā)布消息
使用pub(°□°)lish方法發(fā)布消息到指定的(de)主題,您需要提供一個(gè)回調函數來(lái)??處理消息發(fā)布成功或失敗的情況。
function publishMessage(topic, me┐(′?`)┌ssage) { mqttClient.publish(topic, message, { qos: 1 }, function (err??) { if (!err) { console.log("消??息已發(fā)布ヾ(?■_■)ノ到主題:" + topic); } else { console.error("發(fā)布消息失?。?quot; + err); } });}7、處理接收到的消(′ω`)息
當接收到與訂閱主?題相關(guān)的消息時(shí),onMessageArrived回調函數將被(′?_?`)調用,您可以在此函數中處理接收到的消息。
function on(′Д` )MessageArrived(??message) { console.log("收到主題:&( ?ヮ?)quot; + message.ヽ(′▽?zhuān)?/d??est??inationName + " 的消息:" + message.payloadString);}8、斷開(kāi)連接
使用disconnec??t方法斷開(kāi)與MQTT服務(wù)器的連接,您可(ke)以在適當的時(shí)機調用此方法,例如頁(yè)面卸載時(shí)。
window.addE??ventListener("beforeunlo(???)ad", onBeforeUnload); // 監聽(tīng)頁(yè)面卸載事件functio(′?`)n onBeforeUnload() { mqttClient.disconヾ(′▽?zhuān)??nect(); // 斷開(kāi)連接前先取消訂閱主題,避免重復訂閱問(wèn)題}Copyright ? 2012-2018 天津九安特機電工程有限公司 版權所有 備案號: