使用Workerman\Mqtt\Client设置用户名和密码就没办法正常连接

zzdfwl

问题描述

使用Workerman\Mqtt\Client连接mqtt服务器就报错 "Mqtt client: Connection Refused, bad user name or password",去掉账号密码 然后去掉mqtt服务的账号密码认证就能正常连接。

程序代码或配置

# mqtt.php配置(这个是通过process.php方式的配置)
return [
    // 'broker' => 'mqtt://106.53.125.85:1883',  # MQTT 服务器地址
    'broker' => 'mqtt://iot.yuanqq.net:1883',  # MQTT 服务器地址
    'client_id' => 'eatsplus_mqtt_' . bin2hex(random_bytes(4)),
    'username' => "Firstsensor",      // 新增用户名
    'password' => "*******",       // 新增密码
    'keepalive' => 60,
    'protocol' => 4,
    'clean_session' => true,
    'topics' =>  [
        ['topic' => 'test_topic', 'qos' => 1],
        ['topic' => 'fst_data_report/#', 'qos' => 1],
        ['topic' => 'fst_para_report/#', 'qos' => 1],
    ]
];

# composer.json配置
"require": {
    "php": ">=8.0",
    "workerman/webman-framework": "^1.5.0",
    "monolog/monolog": "^2.0",
    "illuminate/database": "^10.48",
    "illuminate/pagination": "^10.48",
    "illuminate/events": "^10.48",
    "symfony/var-dumper": "^6.4",
    "laravel/serializable-closure": "^2.0",
    "webman/console": "^1.3",
    "robmorgan/phinx": "^0.13.0",
    "vlucas/phpdotenv": "^5.6",
    "symfony/yaml": "^6.4",
    "firebase/php-jwt": "^6.10",
    "topthink/think-validate": "^2.0",
    "illuminate/redis": "^10.48",
    "symfony/cache": "^6.4",
    "psr/simple-cache": "^3.0",
    "guzzlehttp/guzzle": "^7.9",
    "ext-json": "*",
    "ext-openssl": "*",
    "ext-simplexml": "*",
    "aliyuncs/oss-sdk-php": "^2.7",
    "ext-curl": "*",
    "workerman/crontab": "^1.0",
    "webman/redis-queue": "^1.3",
    "jasongrimes/paginator": "~1.0",
    "workerman/mqtt": "^2.0"
  },

截图

重现问题的步骤

1、首选确认一点 username,password是没有问题的,因为使用mqtt工具可以正常连接并接收数据(看图)。
截图
2、去掉mqtt服务的账号密码认证,然后删除配置文件中的username,password就可以正常连接接收数据。
3、调整过workerman/mqtt的版本,之前是2.1降级到2.0
4、也通过控制器中简易调用还是同样报错(特意新加的用户名和密码),如图
截图
结果如图:
截图
还有一点就是 通过mqtt客户端连接的时候,mqtt服务器能正常收到连接请求,且能看到传递的用户名,如图:

截图
但我使用webman连接时的日志中好像根本看不到用户名
截图

操作系统环境及workerman/webman等具体版本

本地环境:win10,
mqtt客户端:MQTTX Version: v1.11.1
mqtt服务端:Node 'emqx@172.23.0.8' 5.8.5 is started

117 3 0
3个回答

zzdfwl

有人碰到过这个问题吗

  • 暂无评论
不败少龙

https://www.workerman.net/doc/workerman/components/workerman-mqtt.html 是按照手册上面的配置的账号密码吗?

在$options里面配置账号密码

  • 暂无评论
随心所欲

密码里是不是有特殊符号,先改成纯字母或者纯数字试试!

  • 暂无评论
×
🔝