首页 > 解决方案 > Laravel MQTT 订阅 - 未定义索引:qos

问题描述

我尝试订阅一个主题,我收到下面提到的错误:

未定义的数组键“qos”

我的代码:

`试试{

$mqtt = new Mqtt();
$mqtt->ConnectAndSubscribe('myTopic', function ($topic, $msg) {
       Log::info("Mqtt Msg Received");
});

} 捕捉 (\Exception $e) {

 dd($e->getMessage());

}`

(如示例中所示,我将其插入到控制器中)。

$buffer .= chr($callback["qos"]);

在供应商/salmanzafar/laravel-mqtt/src/MqttClass/MqttService.php:173

如果我添加一个简单的“?? 0”来解决问题,当我尝试订阅时,它似乎不起作用。

我正在使用 Laravel 8.16 和 PHP 8.0 和“salmanzafar/laravel-mqtt”:“^2.0”。

标签: mqttlaravel-8phpmqtt

解决方案


文档:https ://packagist.org/packages/salmanzafar/laravel-mqtt

请检查您的 QoS 是否配置Config/mqtt.php

    'host'      => env('mqtt_host','127.0.0.1'),
    'password'  => env('mqtt_password',''),
    'username'  => env('mqtt_username',''),
    'certfile'  => env('mqtt_cert_file',''),
    'localcert' => env('mqtt_local_cert', ''),
    'localpk'   => env('mqtt_local_pk', ''),
    'port'      => env('mqtt_port','1883'),
    'debug'     => env('mqtt_debug',false) //Optional Parameter to enable debugging set it to True
    'qos'       => env('mqtt_qos', 0), // set quality of service here
    'retain'    => env('mqtt_retain', 0) // it should be 0 or 1 Whether the message should be retained.- Retain Flag

推荐阅读