samshum22
samshum22
  • 发布:2021-04-23 17:41
  • 更新:2021-04-23 17:41
  • 阅读:1911

手機連不上 mqtt broker (已解決,包含一大堆已知連接不上的原因,歡迎使用)

分类:uni-app

以下是問題:

我broker 是 Eclipse Mosquitto MQTT v5/v3.1.1 broker,

同一段代碼,使用uniapp運行不了,在raspberry 上則可以正常運行,請問是為何?

var mqtt = require ('mqtt');
var client = mqtt.connect('wx://192.168.100.66'); // 此處本應是mqtt://192.168.100.66 ,但會報錯
client.on('connect', function () {
console.log('connected');
client.subscribe('/python/mqtt')
})
client.on('message', function (topic, message) {
console.log(topic,':',message.toString())
})
client.on('reconnect', (msg) => {
console.log('reconnect', msg)
});
client.on('reconnect', (msg) => {
console.log('reconnect', msg)
});
client.on('error', () => {
console.log('error')
});
client.on('end', () => {
console.log('end')
});
client.on('offline', (msg) => {
console.log('offline',msg)
});

以下是console內容:
17:35:34.271 offline, undefined at main.js:90
17:35:35.274 reconnect, undefined at main.js:78
17:35:41.277 reconnect, undefined at main.js:78
17:35:47.308 reconnect, undefined at main.js:78
17:35:53.343 reconnect, undefined at main.js:78


以下是解決方案及一些常見錯誤設定:

第一:MQTT 在 APP端 暫時不能使用mqtt協議 (mqtt://ip地址) 要改為:
H5端-websock協議 ws://ip地址:端口
APP端 及 微信端-websock協議 wx://ip地址:端口
如: wx://192.168.100.66:8080/

第二: broker 端為windows OS 情況下 (本人使用 Eclipse Mosquitto 下載地址為https://mosquitto.org/download/)
1.修改 MQTT 預設config: C:\Program Files\mosquitto\mosquitto.conf
增加以下幾行:
allow_anonymous true #允許匿名
port 1883 #mqtt端口
listener 8080 #websocket端口 大概意思是 端口轉發 由8080 轉做1883 以及由websocket協議轉做mqtt協議
protocol websockets #使用websocket端口
2.要打開[windows服務],詳細不說了
3.網絡防火牆最好關掉吧, 網絡點選在[專用]網絡 不要點選 [公用]網絡
最後吐槽一下windows 明明自己的問題,偏偏就幫你封這封那的,真心不好開發
可能還有其他的因素,導致連不上MQTT,就自行找一下原因了,或留言看一下有沒有大神可以幫到你.

2021-04-23 17:41 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复