使用Workerman\Mqtt\Client連接mqtt服務(wù)器就報錯 "Mqtt client: Connection Refused, bad user name or password",去掉賬號密碼 然后去掉mqtt服務(wù)的賬號密碼認證就能正常連接。
# mqtt.php配置(這個是通過process.php方式的配置)
return [
// 'broker' => 'mqtt://106.53.125.85:1883', # MQTT 服務(wù)器地址
'broker' => 'mqtt://iot.yuanqq.net:1883', # MQTT 服務(wù)器地址
'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工具可以正常連接并接收數(shù)據(jù)(看圖)。
2、去掉mqtt服務(wù)的賬號密碼認證,然后刪除配置文件中的username,password就可以正常連接接收數(shù)據(jù)。
3、調(diào)整過workerman/mqtt的版本,之前是2.1降級到2.0
4、也通過控制器中簡易調(diào)用還是同樣報錯(特意新加的用戶名和密碼),如圖
結(jié)果如圖:
還有一點就是 通過mqtt客戶端連接的時候,mqtt服務(wù)器能正常收到連接請求,且能看到傳遞的用戶名,如圖:
但我使用webman連接時的日志中好像根本看不到用戶名
本地環(huán)境:win10,
mqtt客戶端:MQTTX Version: v1.11.1
mqtt服務(wù)端:Node 'emqx@172.23.0.8' 5.8.5 is started
http://www.wtbis.cn/doc/workerman/components/workerman-mqtt.html 是按照手冊上面的配置的賬號密碼嗎?
在$options里面配置賬號密碼