当前位置:首页 > 编程笔记 > 正文
已解决

thinkphp链接mqtt服务器,然后在订阅下发布消息

来自网友在路上 159859提问 提问时间:2023-10-31 15:59:03阅读次数: 59

最佳答案 问答题库598位专家为你答疑解惑

cmd打开项目根目录,安装插件,执行下面的命令

composer require php-mqtt/client

执行完成之后会在vendor 目录下有php-mqtt 文件
在这里插入图片描述

然后在你的 extend文件下 新建mqtt文件 在文件中新建 Mqtt.php 下面是代码
在这里插入图片描述

<?php
/** @S: ========================================================* @Name: 控制器: * @Author: Fu* @Date: 2022-03-25 14:20:58* @FilePath: /hezonyuyin/extend/mqtt/Mqtt.php* @E: ========================================================*/
namespace mqtt;use PhpMqtt\Client\MQTTClient;
class Mqtt
{private $server;private $port;private $clientId;private $username;private $password;private $clean_session;public function __construct($server = '', $port = '', $clientId = '', $username = '', $password = '', $clean_session = ''){$this->server =  '127.0.0.1';//这里是你的服务器地址$this->port =  1883;$this->clientId =  'php-'.uniqid();$this->username =  'emqx_user';$this->password =  NULL;$this->clean_session  =  FALSE;}/*** @S: -------------------------------* @Name: 方法: 连接MQTT* @Author: Fcy* @param {*}* @return {*}* @Date: 2022-03-31 09:26:12* @E: -------------------------------*/    public function mqtt(){$mqtt = new MqttClient($this->server, $this->port, $this->clientId);$mqtt->connect($this->username, $this->password);$mqtt->loop(true);}/*** @S: ------------------------------* @Name: 方法: 发布订阅* @Author: Fcy* @param {*}* @return {*}* @Date: 2022-03-25 14:22:42* @E: -------------------------------*/    public function publish($topic,$content){$mqtt = new MqttClient($this->server, $this->port, $this->clientId);$mqtt->connect($this->username, $this->password);$mqtt->publish($topic,$content,0,true);}}

在项目的控制器的方法里,实现发布消息,方法如下

<?php
namespace app\facemqtt\controller;use think\Controller;
//引入extend文件夹里的类
use mqtt\Mqtt;
class Index extends Controller
{public function indexpage(){$this->push('topic');return 123;}private function push($topic, $data = []){$mqtt = new Mqtt();$content = json_encode(['type' => 123,'time' => time(),'msg'  => '你好!',]);//发布订阅消息,$topic 是主题,$content是发布的消息//然后订阅的这个主题的程序,就会收到$content消息$mqtt->publish($topic, $content);}
}
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"thinkphp链接mqtt服务器,然后在订阅下发布消息":http://eshow365.cn/6-28776-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!