Mosquitto-PHP 簡單實現訂閱后的收發消息


1.先來一張圖表示一下基本的收發消息的機制,這個圖很簡單

 

2.github 上面有實例大家可以看看

https://github.com/mgdm/Mosquitto-PHP.git

中文官方文檔 https://www.kancloud.cn/liao-song/mosquitto-php/500403

3.進入正題

首先你要自己搭建一個代理服務器 也就是Mosquitto的代理服務器,這里百度搜索就能搜索到

下面開始進入主題直接代碼來了

發布者pub.php

$client = new Mosquitto\Client();
$client->setCredentials('test','123456');
$client->connect("www.haha.com", 1883, 5);

for($i = 0;$i<=10;$i++) {
    $client->loop();
    $mid = $client->publish('ss', "Hello from PHP at " . date('Y-m-d H:i:s'), 1, 0);
    echo "Sent message ID: {$mid}\n";
    $client->loop();

    sleep(2);
}


因為Mosquitto對於php是一個擴展,所以直接new一下就可以了,

通過setCredentials($username,$password);函數的兩個參是服務器的賬號和密碼

通過connect(url,1883,5);函數建立與服務器的鏈接 url也就是你Mosquitto服務器的地址

loop()函數是客戶端主網絡循環,必須調用該函數來保持 client(client既可以是發布者也可以是訂閱者) 和 broker(可以理解為就是我們的Mosquitto服務器) 之間的通訊。

通過 publish($topic, $payload[, $qos = 0, $retain = false])發布主題消息。

  • $topic (string) – 要發表的主題
  • $payload (string) – 消息體
  • $qos (int) – 服務質量,值0,``12 //qos是大家可以百度一下,資料很多
  • $retain (boolean) – 是否保留此消息,默認為false

這樣簡單的發布者就編寫完了,打開網頁就可以訪問了,下面是發送訂閱成功的截圖

訂閱者

<?php

$c = new Mosquitto\Client;
$c->setCredentials('test','123123');
$c->connect(www.baidu.com', 1883, 50);
$c->subscribe('ss', 1);
$c->onMessage(function($m) {
    var_dump($m);
});
$c->loopForever();
subscribe($topic, $qos)訂閱一個主題。
  • $topic (string) – 要訂閱的主題。
  • $qos (int) – 服務質量

需要注意的是 這個函數中的topic 值要與pulish中的topic相同,也就是說,訂閱者訂閱了SS主題的,當發布者發布關於SS主題的信息時,Mosquitto服務器就會把相關信息發送給訂閱者

最后訂閱者通過onMessage()中的回調函數來取得發布的信息和內容,下面放上截圖

 

這就是最簡單的發布者與訂閱者之間的例子實現,總結一下希望能幫助到一些需要的人

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM