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,``1
或2 //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()中的回調函數來取得發布的信息和內容,下面放上截圖

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