如何在uniapp中使用mqtt


由於要取一些實時數據並在手機app上展示,就想到用mqtt進行即時通訊。

下面附上uniapp中引入mqtt的全過程:

一、uniapp插件市場的參考插件

  https://ext.dcloud.net.cn/plugin?id=854

二、具體引入過程

1.安裝mqtt和uuid

在uniapp項目根目錄下分別運行安裝mqtt和uuid的命令行,因為后面會用uuid生成mqtt的clientId,所以這邊就一起安裝了。

npm install mqtt@3.0.0

npm install uuid

 

 Ps.

①我這里和uniapp提供的插件安裝的mqtt版本一樣,我也嘗試裝了最新的版本,會報錯,emmmmm...........

②如果沒有pakage.json,安裝是會提示報錯,但是不影響安裝使用。如果想方便一點,下次拉代碼直接安裝的話,可以自己在項目根目錄下加一個pakage.json文件,添加如下內容:

{
  "name": "",
  "version": "1.0.0",
  "description": "",
  "author": "",
  "license": "MIT",
  "dependencies": {
    "mqtt": "^3.0.0",
    "uuid": "^8.3.0"
  },
  "devDependencies": {},
  "scripts": {}
}

 

2.頁面引入mqtt並調用

①mqtt連接配置,放在/utils/mqtt.js里面,全局可用。

export const MQTT_IP = '192.168.9.128:8083/mqtt'//mqtt地址端口
const MQTT_USERNAME = 'public'//mqtt用戶名
const MQTT_PASSWORD = 'public'//密碼

export const MQTT_OPTIONS = {
    connectTimeout: 5000,
    clientId: '',
    username: MQTT_USERNAME,
    password: MQTT_PASSWORD,
    clean: false
}

②vue頁面引用mqtt

mqtt里面的clientId用uuid生成唯一標識碼,防止不同頁面訂閱不同主題時數據出現粘連。

<script>
    import { v4 } from 'uuid';
    import {
        MQTT_IP,
        MQTT_OPTIONS
    } from '@/utils/mqtt.js';
    var mqtt = require('mqtt/dist/mqtt.js')
    var client
    export default {
        data() {
            return {
                topic: '' //要訂閱的主題
            }
        },
        mounted() {this.connect() //連接
        },
        methods: {
            connect() {
                MQTT_OPTIONS.clientId = v4()
                var that = this
                // #ifdef H5
                client = mqtt.connect('ws://' + MQTT_IP, MQTT_OPTIONS)
                // #endif
                // #ifdef MP-WEIXIN||APP-PLUS
                client = mqtt.connect('wx://' + MQTT_IP, MQTT_OPTIONS)
                // #endif
                client.on('connect', function() {
                    console.log('連接成功')
                    client.subscribe(that.topic, function(err) {
                        if (!err) {
                            console.log('訂閱成功')
                        }
                    })
                }).on('reconnect', function(error) {
                    console.log('正在重連...', that.topic)
                }).on('error', function(error) {
                    console.log('連接失敗...', error)
                }).on('end', function() {
                    console.log('連接斷開')
                }).on('message', function(topic, message) {
                    console.log('接收推送信息:', message.toString())
                })
            }
        }
    }
</script>

 

3.運行結果

數據實時變化。

 

 

以上就是uniapp中使用mqtt的方法分享。

 

轉載請注明地址:https://www.cnblogs.com/merryan-share/p/13578797.html

/****************************我是可愛的分割線********************************/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM