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()中的回调函数来取得发布的信息和内容,下面放上截图

 

这就是最简单的发布者与订阅者之间的例子实现,总结一下希望能帮助到一些需要的人

 

转载于:https://www.cnblogs.com/iceman-/p/8317985.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值