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

     

    这就是最简单的发布者与订阅者之间的例子实现,总结一下希望能帮助到一些需要的人
  • 相关阅读:
    关于工作态度
    ajax请求链接加时间戳
    自动消失的提示效果
    表设计原则
    进度展示图
    freemarker时间格式化
    Java的Thread.currentThread().getName() 和 this.getName() 以及 对象.getName()区别???
    使用Github做服务器展示前端页面
    Spring的生命周期
    输入三个字符,从小到大的顺序输出这三个字符
  • 原文地址:https://www.cnblogs.com/iceman-/p/8317985.html
Copyright © 2020-2023  润新知