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 MosquittoClient(); $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} "; $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 MosquittoClient; $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()中的回调函数来取得发布的信息和内容,下面放上截图
这就是最简单的发布者与订阅者之间的例子实现,总结一下希望能帮助到一些需要的人