PHP+CloudMQTT详解 phpMQTT使用教程

CloudMQTT是云中托管的Mosquitto服务器。 Mosquitto实现了MQ遥测传输协议MQTT,该协议提供了使用发布/订阅消息队列模型来执行消息传递的轻量级方法。

 

CloudMQTT概述: https://www.cloudmqtt.com/docs.html

CloudMQTT参考文档: https://www.cloudmqtt.com/docs-php.html

github下载 : https://github.com/bluerhinos/phpMQTT

 

CloudMQTT 除了有PHP的类库,还有python,java.net等mqtt的类库。这里主要讲的是以PHP的mqtt类库为主。

cloudmqtt

 

phpMQTT客户端发布:代码示例

//publish.php
  require("phpMQTT.php");

  $host = "hostname"; //主机
  $port = port; //端口
  $username = "username"; //如果没有则为空 
  $password = "password"; //如果没有则为空
  $message = "Hello CloudMQTT!"; //要发送的消息

  //phpMQTT 有四个参数:主机,端口,客户端id,证书。官网这里的案例没写证书,请参考phpMQTT类
  //没有证书的时候只能连接1883端口,不能连接8883端口。
  $mqtt = new phpMQTT($host, $port, "ClientID".rand()); 
  //连接
  if ($mqtt->connect(true,NULL,$username,$password)) {
    $mqtt->publish("topic",$message, 0);
    $mqtt->close(); //关闭
  }else{
    echo "Fail or time out<br />";
  }

 

phpMQTT服务端订阅:代码示例

//subscribe.php
// 注意:订阅请用窗口或者后台去运行,不要再页面运行。
  require("phpMQTT.php");
  ignore_user_abort(true); // 后台运行
  set_time_limit(0); // 取消脚本运行时间的超时上限
  date_default_timezone_set('PRC'); //设置中国时区

  $host = "hostname"; 
  $port = port;
  $username = "username"; 
  $password = "password"; 
  //同样这里少了证书参数
  $mqtt = new phpMQTT($host, $port, "ClientID".rand()); 

  if(!$mqtt->connect(true,NULL,$username,$password)){
    exit(1);
  }

  //currently subscribed topics
  $topics['topic'] = array("qos"=>0, "function"=>"procmsg");
  $mqtt->subscribe($topics,0);

  while($mqtt->proc()){ //无限去请求
  }

  $mqtt->close();
  function procmsg($topic,$msg){//输出消息
    echo "Msg Recieved: $msg";
  }
    A+
发布日期:2018年12月22日 17:01:04  所属分类:CloudMQTT
最后更新时间:2021-03-18 11:06:23
头像
  • ¥ 0.0元
  • 市场价:199.0元
  • ¥ 999元
  • 市场价:4999元
  • ¥ 199.0元
  • 市场价:399.0元
  • ¥ 98.0元
  • 市场价:298.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:5   其中:访客  0   博主  0

  1. 头像 758749598 1

    是直接把这个phpmqtt类放服务器就可以订阅发布了吗,还是需要配置其他扩展,为啥运行你上边的代码会报错:stream_socket_client(): unable to connect to tcp://127.0.0.1:1883 (Connection refused) in /mnt/object/test_mqtt/phpMQTT.php on line 90

    • 付杰 付杰

      @758749598 报错后,你得看90行的代码啊!具体是哪一行?

      • 头像 758749598 1

        @付杰 你好,我想问一下,用了 phpmqtt 扩展类库还需要搭建 mqtt 服务吗?

    • 付杰 付杰

      @758749598 由于你通过QQ上找到我,看到你的报错代码截图如下:
      phpMQTT ssl证书

      给你的解决方案:
      phpMQTT 有四个参数:主机,端口,客户端id,证书。官网这里的案例没写证书,请参考phpMQTT类
      没有证书的时候只能连接1883端口,不能连接8883端口。

      最终你的操作是:把证书屏蔽了,现在已经可以了!