使用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连接时的日志中好像根本看不到用户名
本地环境:win10,
mqtt客户端:MQTTX Version: v1.11.1
mqtt服务端:Node 'emqx@172.23.0.8' 5.8.5 is started
有人碰到过这个问题吗
https://www.workerman.net/doc/workerman/components/workerman-mqtt.html 是按照手册上面的配置的账号密码吗?
在$options里面配置账号密码
密码里是不是有特殊符号,先改成纯字母或者纯数字试试!