美文网首页
ThinkPHP3.2中使用phpMQTT

ThinkPHP3.2中使用phpMQTT

作者: 焚_44b3 | 来源:发表于2018-08-31 08:39 被阅读650次

    直接上干货!

    <?php
    /*
    * 作者    :   duerhong
    * QQ    :   1186969412
    * QQ群   :   536633782
    */
    
    namespace MQTT\Controller;
    use Think\Controller;
    /**
     * 该类主要为订阅,建议订阅代码和发布代码不要写在同一个类中,避免修改造成不必要的误改。
     * 每次更新该类后需要重启mqtt订阅,否则新的改动不会生效。
     * 请在相应的位置放入phpMQTT的库,\Vendor\PhpMQTT\PhpMQTT
     * 库代码:https://github.com/bluerhinos/phpMQTT/blob/master/phpMQTT.php
     * 类库使用的时候注意命名空间,类名称命名要和thinkphp的保持一致,不然会报错
     * ...
     */
    class SubController extends Controller{
        public function _initialize(){
            header("Content-Type:text/html; charset=utf-8");
            // 客户端id    可以用随机数
            $this->client="sub_123";
            // mqtt主机 主机,请配置为自己的主机
            $this->host = C('MQTT_HOST'); 
            // mqtt端口
            $this->port = C('MQTT_PORT');
            // 密钥 用于证书配置,如果需要ssl认证,则必须填写
            $this->cert= 'ca.pem';
            // mqtt账号
            $this->username ="";
            // mqtt密码
            $this->password = "";
            // 订阅主题 订阅的主题,注意使用的主题一定要是mqtt配置过的主题,比如百度天工需要策略认证过的
            // 自己学习的时候,可以随意自定义,一般跟发布主题一致便可以收到消息
            // 如要要接受所有主题,请使用#
            $this->topics_name="sub topic";
        }
    
        //运行 并且订阅
        function index(){
            // 创建mqtt实例 
            $this->mqtt = new \Vendor\PhpMQTT\PhpMQTT($this->host,$this->port,$this->client,$this->cert);
    
            // 若mqtt链接失败
            if(!$this->mqtt->connect(true,NULL,$this->username,$this->password)) {
                echo "mqtt链接失败!";
            }
    
            // 注意:这里qos的设置,有些broker限制了使用0,则可以用1试试。百度天工测试代码 则为1
            $topics[$this->topics_name] = array("qos" => 0, "function" =>array($this,"message"));
            $this->mqtt->subscribe($topics,0);
            
            while ($this->mqtt->proc()) {
            }
        }
        
        // 回调消息
        public function message($topic,$msg){
            echo "收到订阅消息 $topic:$msg \n\r";
        }
    
       
    }
    
    

    大早上赶时间整理的代码,如果有问题联系qq:1186969412

    相关文章

      网友评论

          本文标题:ThinkPHP3.2中使用phpMQTT

          本文链接:https://www.haomeiwen.com/subject/wcnjwftx.html