当前位置: 首页 > news >正文

laravel和mqtt的对接

1.安装对应的扩展

sudo -u dap /opt/dap/php/bin/php composer.phar require php-mqtt/client
sudo -u dap /opt/dap/php/bin/php composer.phar require workerman/mqtt
启动mqtt: sudo -u dap /opt/dap/php/bin/php artisan mqtt start
启动提示 Error: Class ‘Workerman\Timer’ not found in ****\vendor\workerman\mqtt\src\Client
解决方案:版本问题,修改2行代码即可:找到****\vendor\workerman\mqtt\src\Client.php文件修改:
use \Workerman\Timer;
修改后为
use \Workerman\Lib\Timer;

2.mqtt文件的添加,调用subscribe方法

<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Workerman\Worker; class mqtt extends Command { protected $signature = 'mqtt {action} {--daemon}'; protected $description = 'PHP Server MQTT Client'; protected $client_id = 'php-server'; public function __construct() { parent::__construct(); } public function handle() { global $argv; $arg = $this->argument('action'); $argv [1] = $arg; $argv[2] = $this->option('daemon') ? '-d' : ''; $worker = new Worker(); $worker->count = 1; $worker->onWorkerStart = function () { $mqtt = new \Workerman\Mqtt\Client("mqtt://" . env('MQTT_HOST') . ":" . env('MQTT_PORT'), array( // 'ssl' => array( // 'local_cert' => base_path() . '/path/mqtt/client.crt', // 'local_pk' => base_path() . '/path/mqtt/client.key', // 'cafile' => base_path() . '/path/mqtt/ca.crt', // 'verify_peer' => false, // 'allow_self_signed' => true, // ), // $mqtt->transport = 'ssl'; 'username' => env('MQTT_USER'), 'password' => env('MQTT_PASSWORD'), 'debug' => env('MQTT_DEBUG'), 'client_id' => $this->client_id . mt_rand(0, 999), 'will' => [ 'topic' => 'status/' . $this->client_id, 'content' => 0, 'qos' => 2, 'retain' => true, ] )); $mqtt->onConnect = function ($mqtt) { $mqtt->subscribe('*****'); }; $mqtt->onMessage = function ($topic, $data, $mqtt) { }; $mqtt->connect(); }; $backtrace = \debug_backtrace(); $staticPath = $backtrace[\count($backtrace) - 1]['file']; $uniquePrefix = \str_replace('/', '_', $staticPath); Worker::$pidFile = __DIR__ . '/../../../vendor/workerman/' . $uniquePrefix . '_mqtt.pid'; Worker::runAll(); } }

3.publish方法的调用

$server = env('MQTT_HOST'); $port = env('MQTT_PORT'); $clientId = 'mqtt_' . mt_rand(0, 999);//客户端ID,可随意填写,也可使用rand函数生成随机的 $mqtt = new \PhpMqtt\Client\MQTTClient($server, $port, $clientId); $mqtt->connect(); $mqtt->publish('*****','***');
http://www.jsqmd.com/news/1239140/

相关文章:

  • 信奥模拟题精讲:事件驱动算法解青蛙游泳问题与C++实现
  • Unity流体VFX图实战:从环境配置到物理模拟与性能优化
  • 一器双生,月白釉里藏着相依的弧线
  • 亲身探访重庆万国**售后服务中心|全新电话和完整地址(2026年7月最新) - 万国中国官方服务中心
  • NA-MPNN图神经网络在核酸3D结构预测与设计中的应用
  • 环保激光气体检测与传统方法有什么区别?
  • Visual C++桌面开发实战:从环境搭建到应用部署的完整指南
  • C++构建高性能考勤系统:从核心类设计到数据持久化实战
  • Cursor收购案解析:AI编程工具的技术与商业价值
  • Windows 10 OneDrive彻底卸载解决方案:释放系统资源,提升电脑性能
  • AI编程助手代码记忆技术:codebase-memory-mcp深度解析
  • 深入解析VPDMA状态寄存器:REQ_DELAY与FRAME_START的实战调优
  • Kafka与Java集成实战:生产者消费者配置与性能优化
  • 2026年7月最新帝舵广州番禺万达广场维修保养服务电话 - 帝舵中国官方服务中心
  • 体育数据API接口怎么选?足球篮球电竞全量数据一站接入
  • Qwen3.8大模型实战:2.4T参数MoE架构部署与优化指南
  • C++实现三维热传导显式求解器:从原理到Tecplot可视化输出
  • 导出:对象怎样变成 ZIP 输出
  • 五大AI工作流平台选型指南与实战解析
  • SDN网络拓扑实验:基于Mininet与Python的实践指南
  • ScottPlot5实现高频数据实时可视化的核心技术解析
  • 2026年济南本地生活代运营机构最新排名 商户合作挑选实用指南
  • 3步找回加密压缩包密码:终极免费解决方案指南
  • RabbitMQ recovery.dets文件损坏问题分析与修复
  • Unity中基于Dither抖动实现角色遮挡透明化渲染方案
  • 神经语言模型语法线性表示:原理、验证与工程实践
  • 2026年7月最新宝珀昆明五华壹号广场维修保养服务电话 - 宝珀官方售后服务中心
  • 海南自贸港数智大动脉建设中的AI与边缘计算实践
  • C++组合模式:从核心思想到实战应用,构建灵活可维护的代码结构
  • 深入解析TMS320C55x DSP CPU架构:从哈佛结构到双MAC实战