編碼的世界 / 優質文選 / 文明

php實現mqtt


2022年7月13日
-   

首先簡單的介紹一下mqtt協議,MQTT是一個基於客戶端-服務器的消息發布/訂閱傳輸協議。
MQTT協議運行在TCP/IP或其他網絡協議,提供有序、無損、雙向連接。其特點包括:
1.使用的發布/訂閱消息模式,它提供了一對多消息分發,以實現與應用程序的解耦.
2.對負載內容屏蔽的消息傳輸機制。
3.對傳輸消息有三種服務質量(QoS):
    最多一次,這一級別會發生消息丟失或重複,消息發布依賴於底層TCP/IP網絡。即:<=1
    至多一次,這一級別會確保消息到達,但消息可能會重複。即:>=1
    只有一次,確保消息只有一次到達。即:=1。在一些要求比較嚴格的計費系統中,可以使用此級別
4.數據傳輸和協議交換的最小化(協議頭部只有2字節),以減少網絡流量通知機制,異常中斷時通知傳輸雙方

MQTT協議中有三種身份:發布者(Publish)代理(Broker)(服務器)、訂閱者(Subscribe)。其中,消息的發布者訂閱者都是客戶端,消息代理是服務器,消息發布者可以同時是訂閱者
OK,接下來我們看使用php代碼實現mqtt協議
<?php
class Mqtt {

public function Message() {
$client = new MosquittoClient();

$client->onConnect(function($code, $message) use ($client) {
var_dump($code);
var_dump($message);
$client->subscribe("LXBSERVER",0); //訂閱LXBSERVER主題
});

$client->onMessage(function($message) use($client,$service){
$msg = trim($message->payload);
echo bin2hex($msg)."|"; //如果和硬件通訊時,這裏的msg需要將字符轉換成16進制數據
$msg = strtoupper($msg);
$client->publish("LXBSERVER2","hello world",0); //向LXBSERVER2主題發送消息
});
$client->connect('127.0.0.1', 1883);
$client->loopForever();
}
}
$mqtt = new Mqtt();
$mqtt->Message();

這裏簡單的php編碼就算是完成了,效果如下


熱門文章