laravel和mqtt的对接
1.安装对应的扩展sudo -u dap /opt/dap/php/bin/php composer.phar require php-mqtt/clientsudo -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(*****,***);