在微信小程序中使用mqtt服務(wù)的方法
因?yàn)樾枨蟮年P(guān)系,需要在小程序中使用mqtt來進(jìn)行tcp的長連接,實(shí)時監(jiān)聽設(shè)備的返回狀態(tài)。
js中連接mqtt服務(wù)器是通過websocket來實(shí)現(xiàn)的,我在網(wǎng)上找了2個庫,一個是eclipse開發(fā)的paho-mqtt。
項(xiàng)目地址:https://github.com/eclipse/paho.mqtt.javascript
一個是個人開發(fā)的mqttjs,項(xiàng)目地址:https://github.com/mqttjs/MQTT.js
比較了下,mqqtt.js比較靈活對小程序也有很好的支持,所以采用了這個庫來做連接。
于是看了下他自己的介紹,直接拿過來試用了下。因?yàn)槭侵苯佑迷谛〕绦蛑胁恍枰敲磸?fù)雜,它提供了靜態(tài)的cdn下載,
直接打開鏈接復(fù)制到工程中直接用就可以,不用更改。cdn地址:https://unpkg.com/mqtt@2.18.8/dist/mqtt.js min版:https://unpkg.com/mqtt@2.18.8/dist/mqtt.min.js;
使用起來也很簡單,直接貼代碼
function connectMq(){
// 連接選項(xiàng)
const options = {
connectTimeout: 4000, // 超時時間
// 認(rèn)證信息 按自己需求填寫
clientId: '',
username: 'xxx',
password: 'xxx',
}
let phone = app.globalData.myInfo.TelPhone;
const client = mqtt.connect('wx://xx.xxxxxxx', options)
client.on('reconnect', (error) => {
console.log('正在重連:', error)
})
client.on('error', (error) => {
console.log('連接失敗:', error)
})
client.on('connect', (e) => {
console.log('成功連接服務(wù)器111')
//訂閱一個主題
client.subscribe('phone_' + phone, { qos: 0 }, function (err) {
if (!err) {
//client.publish('123', 'Hello mqtt')
console.log("訂閱成功")
}
})
})
//監(jiān)聽mq的返回
client.on('message', function (topic, message, packet) {
// message is Buffer
console.log("packet", packet.payload.toString())
client.end()
})
}
這里著重要注意的連接地址的寫法
//mqtt.connect('wx://xxxxxxxxxx', options);
//wx:// xx.xx.xxxxxxx
//協(xié)議版本 鏈接地址
//微信小程序這個版本 作者自己封裝了一層 wx表示普通的ws協(xié)議連接 wxs表示加密之后的wss協(xié)議連接。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript設(shè)計(jì)模式 封裝和信息隱藏(上)
今天博文關(guān)注的是javascript中的封裝,文章內(nèi)容來自《pro javascript design patterns》(有興趣的朋友可以直接去下)和自己對這一問題的理解2012-07-07
基于javascript實(shí)現(xiàn)移動端輪播圖效果
這篇文章主要為大家詳細(xì)介紹了基于javascript實(shí)現(xiàn)移動端輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-12-12
vue組件中watch props根據(jù)v-if動態(tài)判斷并掛載DOM的問題
這篇文章主要介紹了vue組件中watch props根據(jù)v-if動態(tài)判斷并掛載DOM的問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05
Javascript實(shí)現(xiàn)Web顏色值轉(zhuǎn)換
這篇文章主要介紹了Javascript實(shí)現(xiàn)Web顏色值轉(zhuǎn)換,需要的朋友可以參考下2015-02-02
利用Three.js實(shí)現(xiàn)3D三棱錐立體特效
Three.js是基于原生WebGL封裝運(yùn)行的三維引擎,在所有WebGL引擎中,Three.js是國內(nèi)文資料最多、使用最廣泛的三維引擎。本文將用Three.js實(shí)現(xiàn)3D三棱錐立體特效,感興趣的可以了解一下2022-06-06

