近年、IoT 技術の発展に伴い、MQTT プロトコルは IoT 通信の分野で徐々に重要な位置を占めるようになりました。 MQTT (Message Queuing Telemetry Transport) は、パブリッシュ/サブスクライブ (pub/sub) モデルに基づく軽量の通信プロトコルです。 MQTT プロトコルはシンプル、効率的、信頼性が高く、柔軟性があり、特にモノのインターネットの分野で、携帯電話、組み込みシステム、PC などのさまざまなデバイスに適用できます。この記事では、Go言語を使用してMQTTプロトコルを実装する方法を紹介します。
MQTT プロトコルは、低帯域幅、高遅延、不安定なネットワーク環境での通信ニーズに合わせて設計されたプロトコルです。 MQTT はパブリッシュ/サブスクライブ モデルの考え方を導入しています。つまり、メッセージ パブリッシャー (Publisher) とメッセージ サブスクライバー (Subscriber) 間のメッセージ配信は直接接続されず、中間プロキシ サーバー (ブローカー) を介して実装されます。 )。
MQTT プロトコルのメッセージ形式は次のとおりです。
——— ——— ——— ——— ——— ——— ——— ——— ——— ——— — —— ——— ——— ———
|固定ヘッダー|可変ヘッダー|メッセージ本文|
——— ——— ——— ——— ——— ——— — — — ——— ——— ——— ——— ——— ——— ———
固定ヘッダー: メッセージ タイプ、QoS、およびその他の情報が含まれます。
可変ヘッダー: クライアント ID、トピック名など、セカンダリ プロトコルのいくつかの固定情報が含まれます。
メッセージ本文: パブリッシュまたはサブスクライブの具体的な内容。
Go 言語は、優れた同時実行性と効率的なパフォーマンスで知られる新興プログラミング言語であり、最近では次の分野でも人気の言語となっています。モノのインターネット: 人気のある言語の 1 つ。 Go 言語は、TCP、UDP、HTTP などの優れたネットワーク プログラミング ライブラリを提供します。Go 言語の優れた機能とこれらのライブラリを使用して、MQTT プロトコルを簡単に実装できます。
2.1 mqtt ライブラリのインストール
Go 言語は、Paho MQTT、Eclipse Paho などの複数の mqtt ライブラリを提供します。この記事では、次のコマンドでインストールされる Eclipse Paho ライブラリを使用します。
go get github.com/eclipse/paho.mqtt.golang
2.2 MQTT サーバーへの接続
Eclipse Paho ライブラリを使用する前に、MQTT に接続する必要があります。プロキシサーバー。接続するときは、MQTT プロキシ サーバーのアドレス、クライアント ID、ユーザー名、パスワード、その他の情報を指定する必要があります。
MQTT ライブラリは ClientOptions タイプを提供し、接続オプションはこのタイプの SetXXX メソッドを通じて設定されます。たとえば、次のとおりです。
opts := mqtt.NewClientOptions().AddBroker("tcp://localhost:1883").SetClientID("go-mqtt") opts.SetUsername("user") opts.SetPassword("password") client := mqtt.NewClient(opts)
上記のコードでは、AddBroker メソッドは MQTT プロキシを設定します。 SetClientID メソッドはクライアント ID を設定し、SetUsername メソッドと SetPassword メソッドは接続認証情報を設定します。
2.3 メッセージの公開
MQTT プロトコルでは、メッセージの公開側はメッセージを公開するクライアントです。メッセージを公開するときは、メッセージの件名と内容を指定する必要があります。 。 Eclipse Paho ライブラリは、メッセージを送信するための Publish メソッドを提供します。以下に示すように:
token := client.Publish("topic", 0, false, "hello world") token.Wait()
上記のコードでは、client.Publish メソッドの最初のパラメーターはトピック名、2 番目のパラメーターは QoS レベル、3 番目のパラメーターは保持フラグです (true は保持フラグを意味します)。サーバーは、対応するトピックの最後の A メッセージを保存し、トピックが新しくサブスクライブされたときに送信します)、4 番目のパラメーターはメッセージ本文です。
2.4 メッセージのサブスクライブ
MQTT プロトコルでは、メッセージのサブスクライバーは、サブスクライブする必要があるトピックを提供する必要があり、メッセージのサブスクライブ時にメッセージを処理するコールバック関数を提供する必要があります。到着。 Eclipse Paho ライブラリは、メッセージをサブスクライブするための Subscribe メソッドを提供します。以下に示すように:
token := client.Subscribe("topic", 0, func(client mqtt.Client, msg mqtt.Message) { fmt.Printf("Received message: %s from topic: %s ", msg.Payload(), msg.Topic()) }) token.Wait()
上記のコードでは、client.Subscribe メソッドの最初のパラメーターはトピック名、2 番目のパラメーターは QoS レベル、3 番目のパラメーターはコールバック関数です。メッセージの到着時に呼び出されます。
上記のサンプル コードを通じて、Go 言語と Eclipse Paho ライブラリを使用して MQTT プロトコルを実装するのが非常に簡単であることがわかります。 Go 言語は優れた同時実行パフォーマンスとネットワーク プログラミング ライブラリを備えており、さまざまなネットワーク通信プロトコルを簡単に実装できます。 MQTT プロトコルは、軽量の通信プロトコルとして、モノのインターネットの分野で幅広い用途に使用されています。Go 言語を介して MQTT プロトコルを実装すると、モノのインターネット アプリケーションに、より効率的で安全かつ信頼性の高い通信方法を提供できます。モノのインターネットの発展において、将来的には、モノのインターネットの分野で MQTT プロトコルと Go 言語がますます広く使用されると考えています。
以上がgolang は mqtt を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。