Vue でインスタント通信を実現するために MQTT サーバーを使用する手順を記録します。

Vue でインスタント通信を実現するために MQTT サーバーを使用する手順を記録します。

MQTT プロトコル

MQTT (Message Queuing Telemetry Transport) は、IBM が開発したインスタント メッセージング プロトコルであり、モノのインターネットの重要な部分になる可能性があります。このプロトコルはすべてのプラットフォームをサポートしており、インターネットに接続されたほぼすべてのオブジェクトを外部に接続できます。センサーやアクチュエータの通信プロトコルとして使用されます(Twitter 経由で家をインターネットに接続するなど)。

MQTT は、最小限のコードと帯域幅でリモート デバイスに接続できる、軽量のブローカー ベースのパブリッシュ/サブスクライブ メッセージング プロトコルです。たとえば、衛星やプロキシ接続、ダイヤルアップやヘルスケア プロバイダー接続、一部の自動化デバイスや小型デバイスなどです。また、サイズが小さく、省電力で、プロトコル オーバーヘッドが低く、1 つまたは複数の受信者に情報を効率的に送信できるため、モバイル アプリケーション デバイスにも適しています。

VueはMQTTサーバーを使用して即時通信を実現します

ほとんどのプロジェクトでは、フロントエンドとバックエンドのやり取りは、フロントエンドがバックエンド インターフェイスを要求し、データを取得した後に処理するだけです。以前、私が取り組んでいたプロジェクトでは、MQTT を使用する必要がありました。使用してみると、魔法のようでした。データをリアルタイムで取得するには、サブスクライブするだけで済みます。さっそく、手順を説明します。

1. vueプロジェクトにmqtt.jsをインストールする

npm インストール mqtt --save

2. プロジェクトのmain.jsまたは必要なvueページで参照します。

'mqtt' から mqtt をインポートします

3. 後で使用するために、vueページのデータにクライアントオブジェクトを定義します。

クライアント: {}

さて、次のステップが重要なポイントです。まず、MQTT に接続する必要があります。MQTT に接続するためのメソッドにはコールバック関数があります。次に、接続が成功した後のコールバックにサブスクリプション メソッドを記述して、エラーが発生しないようにします。これがコードです。

4. MQTTに接続してサブスクライブする

  //サーバーに接続する connect() {
      オプション = {
        ユーザー名: "xxx",
        パスワード: "xxxx",
        cleanSession: false、
        キープアライブ:60,
        クライアントID: 'mqttjs_' + Math.random().toString(16).substr(2, 8),
        接続タイムアウト: 4000
      }
      this.client = mqtt.connect('ws://192.168.xxx.xx:8083/mqtt',オプション);
      this.client.on("接続", (e)=>{
        console.log("サーバーに正常に接続しました:",e);
        // 'top/#'、'three/#'、'#' という名前の 3 つのトピックをサブスクライブします。this.client.subscribe(['top/#', 'three/#', '#'], { qos: 1 }, (err)=> {
          もしエラーが起きたら
            console.log("サブスクリプションが成功しました");
            // トピック「pubtop」に「hello, this is a nice day!」という内容のメッセージを公開します。this.publish("pubtop", 'hello, this is a nice day!')
          } それ以外 {
            console.log('メッセージのサブスクリプションに失敗しました!')
          }
        });
      });
      //再接続 this.reconnect()
      //接続が切断されましたか? this.mqttError()
      //情報をリッスンする this.getMessage()
    }

5. メッセージ公開方法

    //メッセージを公開 @topic subject @message コンテンツを公開 publish(topic,message) {
      クライアントが接続されている場合
        console.log('クライアントが接続されていません')
        戻る
      }
      this.client.publish(トピック、メッセージ、{qos: 1}、(err) => {
        もしエラーが起きたら
          console.log('件名は' + トピック + "正常に公開されました")
        }
      })
    }

6. 上記の3つのトピックを聞いて情報を受け取る

    //受信したメッセージをリッスンする getMessage() {
      this.client.on("メッセージ", (トピック, メッセージ) => {
        if(メッセージ) {
          console.log('受信元', topic, '情報', message.toString())
          定数 res = JSON.parse(message.toString())
          //コンソール.log(res, 'res')
          スイッチ(トピック) {
             ケース 'top/#' :
               this.msg = レス
               壊す;
             ケース 'three/#' :
               this.msg = レス
               壊す;
             ケース 'three/#' :
               this.msg = レス
               壊す;
             デフォルト:
               戻る
               this.msg = レス
           }
           this.msg = メッセージ
        }
      });
    },

7. サーバー接続が失敗していないか確認する

    //サーバー接続が失敗したかどうかを監視 mqttError() {
      this.client.on('エラー',(エラー) => {
        console.log('接続に失敗しました:',error)
        this.client.end()
      })
    },

8. 購読解除

    // 購読解除 unsubscribe() {
      this.client.unsubscribe(this.mtopic, (エラー)=> {
        console.log('トピックは' + this.mtopic + '購読解除に成功しました', error)
      })
    },

9. 切断する

    //切断 unconnect() {
      this.client.end()
      this.client = null
      console.log('サーバーが切断されました!')
    },

10. サーバーの再接続を待機する

    //サーバーの再接続を待機する reconnect() {
      this.client.on('再接続', (エラー) => {
          console.log('再接続中:', エラー)
      });
    },

要約する

これで、vue で MQTT サーバーを使用してインスタント メッセージングを実現する方法に関するこの記事は終了です。vue で MQTT インスタント メッセージングを使用する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue は stompjs を使用して MQTT メッセージ プッシュ通知を実装します

<<:  MySQLカスケードレプリケーションの実装方法の例

>>:  MycliはMySQLコマンドライン愛好家にとって必須のツールです

推薦する

オブジェクト指向の観点から Vue コンポーネントを理解するための簡単な分析

同じ関数や HTML コードが複数回使用される場合は、それらをコンポーネントに抽出することを検討でき...

ubuntu16.04でNFSサービスを構築する方法

NFS の紹介NFS (ネットワーク ファイル システム) は、FreeBSD でサポートされている...

Mac OS 10.11 での MySQL 5.7.12 のインストールと設定のチュートリアル

Mac OS 10.11 に MySQL をインストールして設定する方法を、主に写真を使って手順を簡...

Docker での FastAPI デプロイの詳細なプロセス

Docker 学習https://www.cnblogs.com/poloyy/p/15257059...

MySQL 8.0.23 メジャーアップデート (新機能)

著者: Guan Changlong は、Aikesheng の配送サービス部門の DBA です。主...

JS の 3 つの主要な問題、非同期性とシングルスレッドについて簡単に説明します。

目次シングルスレッド非同期シングルスレッドしかし、開発中にネットワーク リクエストやスケジュールされ...

Linuxでkv設定ファイルを変更するにはsedコマンドを使用します

sed は Unix の文字ストリーム エディタ、つまりストリーム エディタです。行指向であり、行単...

HTTP および HTTP コラボレーション Web サーバー アクセス フロー図

Web サーバーは、独立したドメイン名を持つ複数の Web サイトを構築できるほか、通信経路上のトラ...

Web フォームの入力要素の高度な使用例 11 選

1. ボタンが押されたときに点線のボックスをキャンセルする<br />入力に属性値hid...

Reactベースのコンポーネントのカプセル化の実装手順

目次序文antd はどのようにしてコンポーネントをカプセル化するのでしょうか?ディバイダーコンポーネ...

Vue2.x と Vue3.x のルーティングフックの違いの詳細な説明

目次vue2.xプレコンセプト:ルーティングフックのカテゴリルーティングとコンポーネントの概念(フッ...

Linux 上で Docker コンテナを作成、一覧表示、削除する方法の概要

1. Dockerコンテナを起動する以下のコマンドを使用して新しい Docker コンテナを起動しま...

JSデータ型検出のさまざまな方法の概要

目次背景データ型を決定する方法は何ですか? 1. typeof を使用して基本データ型を決定します。...

Linux で binlog ファイルの作成時間を表示するコマンド

目次背景分析する方法背景MySQL は 26 日の 16:23:49 に大量のスロー クエリを生成し...

Webデザインの経験: Webコードを効率的に書く

本来、この第 7 章では、デザインにおけるレイヤーと空間テクニックについて深く議論するはずです。しか...