uniapp プロジェクトで MQTT を使用する方法

uniapp プロジェクトで MQTT を使用する方法

リアルタイムデータを取得してモバイルアプリに表示する必要があるため、インスタントメッセージングに MQTT を使用することを考えました。

以下は、uniapp に MQTT を導入する全体のプロセスです。

1. uniappプラグインマーケットのリファレンスプラグイン

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

2. 具体的な導入プロセス

1. mqttとuuidをインストールする

コマンドラインを実行して、uniapp プロジェクトのルート ディレクトリにそれぞれ mqtt と uuid をインストールします。uuid は後で mqtt の clientId を生成するために使用されるため、ここでは一緒にインストールされます。

[email protected] をインストールします

npm インストール uuid 

追伸

①ここで私がインストールしたmqttのバージョンは、uniappが提供しているプラ​​グインと同じです。最新バージョンもインストールしようとしましたが、エラーが報告されます、うーん……

②pakage.jsonがない場合、インストール時にエラーが表示されますが、インストールおよび使用には影響ありません。もっと便利にしたい場合は、プロジェクトのルート ディレクトリに pakage.json ファイルを追加し、次のコンテンツを追加できます。

{
  "名前": ""、
  "バージョン": "1.0.0",
  "説明": ""、
  "著者": ""、
  「ライセンス」: 「MIT」、
  「依存関係」: {
    "mqtt": "^3.0.0",
    "UUID": "^8.3.0"
  },
  "devDependencies": {},
  「スクリプト」: {}
}

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 = {
    接続タイムアウト: 5000、
    クライアントID: ''、
    ユーザー名: MQTT_USERNAME、
    パスワード: MQTT_PASSWORD、
    クリーン: 偽
}

②vueページ参照mqtt

MQTT の clientId は、異なるページが異なるトピックをサブスクライブするときにデータが固定されないように、uuid を使用して一意の識別コードを生成し ます。

<スクリプト>
    'uuid' から { v4 } をインポートします。
    輸入 {
        、
        MQTT_オプション
    } '@/utils/mqtt.js' から;
    var mqtt = require('mqtt/dist/mqtt.js')
    varクライアント
    エクスポートデフォルト{
        データ() {
            戻る {
                topic: '' // 購読するトピック}
        },
        マウント() {this.connect() //接続},
        メソッド: {
            接続する() {
                MQTT_OPTIONS.クライアントID = v4()
                var that = これ
                // #ifdef H5
                クライアント = mqtt.connect('ws://' + MQTT_IP, MQTT_OPTIONS)
                // #終了
                // #ifdef MP-WEIXIN||APP-PLUS
                クライアント = mqtt.connect('wx://' + MQTT_IP, MQTT_OPTIONS)
                // #終了
                クライアント.on('接続', 関数() {
                    console.log('接続成功')
                    client.subscribe(that.topic, function(err) {
                        もしエラーが起きたら
                            console.log('サブスクリプションが成功しました')
                        }
                    })
                }).on('再接続', 関数(エラー) {
                    console.log('再接続中...', that.topic)
                }).on('エラー', 関数(エラー) {
                    console.log('接続に失敗しました...', error)
                }).on('end', 関数() {
                    console.log('接続が切断されました')
                }).on('メッセージ', 関数(トピック, メッセージ) {
                    console.log('プッシュ情報を受信:', message.toString())
                })
            }
        }
    }
</スクリプト>

3. 運用結果

データはリアルタイムで変化します。

以上が、uniapp で MQTT を使用する方法の共有です。

以上が、uniapp プロジェクトにおける MQTT の使用方法の詳細です。uniapp の MQTT の使用に関する詳細については、123WORDPRESS.COM 内の他の関連記事にも注目してください。

以下もご興味があるかもしれません:
  • uniapp 要素ノードスタイルの動的変更の詳細な説明
  • uniappの無痛トークンリフレッシュ方法の詳細な説明
  • Uniappの小規模プログラム開発経験
  • uniapp アプレットでウォーターフォール フロー レイアウトを実装するためのアイデアとコード
  • Uniapp WeChatアプレット: キー障害の解決策
  • uniappは録音アップロード機能を実現

<<:  Linux環境にRedisをデプロイし、Dockerにインストールする方法

>>:  MySQL エラー コード 1862 の解決方法: パスワードの有効期限が切れています

推薦する

MySql のクラッシュとサービスの起動失敗の解決策

私は長い間PHPに触れてきましたが、インストール環境は非常に不慣れです。多くの問題に遭遇しました。B...

MySQLデータベースでスロークエリログを有効にする方法の詳細な説明

データベースはスロークエリログを有効にします設定ファイルを変更する設定ファイルmy.iniに次の2つ...

Webstorm と Chrome を使用して Vue プロジェクトをデバッグする方法

目次序文1. 新しいVueプロジェクトを作成する2. WebStormの設定1. デバッガポートを設...

よくある MySQL 設計エラーをご存知ですか?

インターネットの発達により、バスを待ったり地下鉄に乗ったりする時間など、断片的な時間を活用して、いつ...

Nginx 外部ネットワーク アクセス イントラネット サイト構成操作

背景:サイトはフロントエンドとバックエンドから分離されています: vue+springbootフロン...

DIV の一般的なタスク (パート 1) — 一般的なタスク (スクロール バーの表示、div の非表示、イベント バブリングの無効化など)

最も一般的に使用されるレイアウト要素として、DIV は Web 開発において重要な役割を果たします。...

HTML ページ スタイルの !-- -- の機能は何ですか?

主に低バージョンのブラウザ向け<!-- --> は HTML コメント タグです。上位バ...

MySql 8.0.16 バージョンのインストールでは、「UTF8B3」ではなく「UTF8B4」が使用されるように求められます。

MySQL 8.0.16 にインストールする場合、「UTF8B3」ではなく「UTF8B4」が使用さ...

CSS3 で複数のカスタムフォントを導入する

今日、HTML に問題を発見しました。多くのデフォルト フォントが提供されていますが、「Bold」、...

Vueにログイン認証傍受機能を設置するアイデアを詳しく解説

目次1. 解決策2. サーバーから返されたトークンをブラウザに保存する3. リクエストにアクセス権限...

C++ を使用して MySQL に接続する方法

C++でMySQLに接続する際の参考情報です。具体的な内容は以下のとおりです。 MySQLCon ク...

HTML文書におけるol要素の数値制限に関する議論

一般的に言えば、HTML ドキュメント内で極端に大きな <ol> リストに遭遇する可能性...

Dockerコンテナのディスクがいっぱいになった場合の状況のまとめ

序文この記事では、最近私が遭遇した 2 つの状況について説明します。今後、新たな発見があれば追加して...

MySQLのデフォルトのソートルールに基づく落とし穴

MySQL のデフォルトの varchar 型は大文字と小文字を区別しません (insensitiv...

Navicat for Mysql 接続エラー 1251 (接続失敗) の問題を解決する

以前書いた内容が詳細さに欠けていたため、今回は修正・補足しました。ただし、以前の MySQL バージ...