ホームページ  >  記事  >  バックエンド開発  >  golang は mqtt を実装します

golang は mqtt を実装します

WBOY
WBOYオリジナル
2023-05-19 09:06:372174ブラウズ

近年、IoT 技術の発展に伴い、MQTT プロトコルは IoT 通信の分野で徐々に重要な位置を占めるようになりました。 MQTT (Message Queuing Telemetry Transport) は、パブリッシュ/サブスクライブ (pub/sub) モデルに基づく軽量の通信プロトコルです。 MQTT プロトコルはシンプル、効率的、信頼性が高く、柔軟性があり、特にモノのインターネットの分野で、携帯電話、組み込みシステム、PC などのさまざまなデバイスに適用できます。この記事では、Go言語を使用してMQTTプロトコルを実装する方法を紹介します。

  1. MQTT プロトコルの概要

MQTT プロトコルは、低帯域幅、高遅延、不安定なネットワーク環境での通信ニーズに合わせて設計されたプロトコルです。 MQTT はパブリッシュ/サブスクライブ モデルの考え方を導入しています。つまり、メッセージ パブリッシャー (Publisher) とメッセージ サブスクライバー (Subscriber) 間のメッセージ配信は直接接続されず、中間プロキシ サーバー (ブローカー) を介して実装されます。 )。

MQTT プロトコルのメッセージ形式は次のとおりです。

——— ——— ——— ——— ——— ——— ——— ——— ——— ——— — —— ——— ——— ———
|固定ヘッダー|可変ヘッダー|メッセージ本文|
——— ——— ——— ——— ——— ——— — — — ——— ——— ——— ——— ——— ——— ———

固定ヘッダー: メッセージ タイプ、QoS、およびその他の情報が含まれます。
可変ヘッダー: クライアント ID、トピック名など、セカンダリ プロトコルのいくつかの固定情報が含まれます。
メッセージ本文: パブリッシュまたはサブスクライブの具体的な内容。

  1. Go 言語は MQTT を実装します

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 番目のパラメーターはコールバック関数です。メッセージの到着時に呼び出されます。

  1. 概要

上記のサンプル コードを通じて、Go 言語と Eclipse Paho ライブラリを使用して MQTT プロトコルを実装するのが非常に簡単であることがわかります。 Go 言語は優れた同時実行パフォーマンスとネットワーク プログラミング ライブラリを備えており、さまざまなネットワーク通信プロトコルを簡単に実装できます。 MQTT プロトコルは、軽量の通信プロトコルとして、モノのインターネットの分野で幅広い用途に使用されています。Go 言語を介して MQTT プロトコルを実装すると、モノのインターネット アプリケーションに、より効率的で安全かつ信頼性の高い通信方法を提供できます。モノのインターネットの発展において、将来的には、モノのインターネットの分野で MQTT プロトコルと Go 言語がますます広く使用されると考えています。

以上がgolang は mqtt を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:golang転送nodejs次の記事:golang転送nodejs