PHP使用MQTT訂閱發佈

首先,你需要有一臺服務器運行着MQTT服務;

我使用的是阿里雲的MQTT微消息MQTT服務,開通是不收費;

一開始可以按量計費;

設置Topic主題

發佈和訂閱的主題;需要發佈的主題都是要在阿里進行開通纔可以使用

<?php

use Mosquitto\Client;

##此處填寫阿里雲帳號 AccessKey
$accessKey = 'XXXX';
##此處填寫阿里雲帳號 SecretKey
$secretKey = 'XXXX';
## 接入點地址,購買實例後從控制檯獲取
$endPoint = 'XXXX.mqtt.aliyuncs.com';
##實例 ID,購買後從控制檯獲取
$instanceId = 'XXXX';
## MQTT Topic,其中第一級 Topic 需要在 MQTT 控制檯提前申請
$topic = 'XXXX';
## MQTT 客戶端ID 前綴, GroupID,需要在 MQTT 控制檯申請
$groupId = 'GID_XXXX';
## MQTT 客戶端ID 後綴,DeviceId,業務方自由指定,需要保證全局唯一,禁止 2 個客戶端連接使用同一個 ID
$deviceId = 'XXXX';
$qos = 0;
$port = 1883;
$keepalive = 90;
$cleanSession = true;
$clientId = $groupId . '@@@' . $deviceId;
echo $clientId . "\n";

$mid = 0;
## 初始化客戶端,需要設置 clientId 和 CleanSession 參數,參考官網文檔規範
$mqttClient = new Mosquitto\Client($clientId, $cleanSession);


## 設置鑑權參數,參考 MQTT 客戶端鑑權代碼計算 username 和 password
$username = 'Signature|' . $accessKey . '|' . $instanceId;
$sigStr = hash_hmac("sha1", $clientId, $secretKey, true);
$password = base64_encode($sigStr);
echo "UserName:" . $username . "  Password:" . $password . "\n";
$mqttClient->setCredentials($username, $password);

## 設置連接成功回調
$mqttClient->onConnect(function ($rc, $message) use ($mqttClient, &$mid, $topic, $qos) {
    echo "Connnect to Server Code is " . $rc . " message is " . $message . "\n";
    $mqttClient->subscribe($topic, $qos);
});


## 設置訂閱成功回調
$mqttClient->onSubscribe(function () use ($mqttClient, $topic, $qos) {
    $mqttClient->publish($topic, "Hello MQTT PHP Demo", $qos);
});

## 設置發送成功回調
$mqttClient->onPublish(function ($publishedId) use ($mqttClient, $mid) {
    echo "publish message success " . $mid . "\n";
});


## 設置消息接收回調
$mqttClient->onMessage(function ($message) {
    echo "Receive Message From mqtt, topic is " . $message->topic . "  qos is " . $message->qos . "  messageId is " . $message->mid . "  payload is " . $message->payload . "\n";

});
$mqttClient->connect($endPoint, $port, $keepalive);


$mqttClient->loopForever();

echo "Finished";

 把剛剛申請的相關實例信息;主題    替換上面代碼;

你需要安裝mqtt擴展或者使用第三方類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章