Dalam beberapa tahun kebelakangan ini, dengan perkembangan teknologi IoT, protokol MQTT secara beransur-ansur menduduki kedudukan penting dalam bidang komunikasi IoT. MQTT (Message Qeuing Telemetry Transport) ialah protokol komunikasi ringan berdasarkan model terbitan/langganan (pub/sub). Protokol MQTT adalah mudah, cekap, boleh dipercayai dan fleksibel, dan boleh digunakan pada pelbagai peranti seperti telefon mudah alih, sistem terbenam dan PC, terutamanya dalam bidang Internet Perkara. Artikel ini akan memperkenalkan cara melaksanakan protokol MQTT menggunakan bahasa Go.
Protokol MQTT ialah protokol yang direka untuk keperluan komunikasi dalam lebar jalur yang rendah, kependaman tinggi dan persekitaran rangkaian yang tidak stabil. MQTT memperkenalkan idea model penerbitan/langganan, iaitu penghantaran mesej antara penerbit mesej (Penerbit) dan pelanggan mesej (Pelanggan) tidak disambungkan secara langsung, tetapi dilaksanakan melalui pelayan proksi perantaraan (Broker). ).
Format mesej protokol MQTT adalah seperti berikut:
+————+————+————+—————+————+— ———+————+—— —+————+————+————+————+————+————+
|Tajuk tetap| Pengepala boleh ubah|Isi mesej|
+————+ ———+————+————+————+————+————+————+— ———+————+————+————+————+—— —+
Pengepala tetap: Mengandungi jenis mesej, QoS dan maklumat lain.
Pengepala pembolehubah: Mengandungi beberapa maklumat tetap protokol kedua, seperti ID klien, nama topik, dsb.
Isi mesej: kandungan khusus penerbitan atau langganan.
Bahasa Go ialah bahasa pengaturcaraan baru muncul yang terkenal dengan kesesuaian yang sangat baik dan prestasi yang cekap. Ia juga baru-baru ini menjadi bahasa yang popular dalam bidang Internet of Things Salah satu bahasa yang popular. Bahasa Go menyediakan beberapa perpustakaan pengaturcaraan rangkaian yang sangat baik, seperti TCP, UDP, HTTP, dll. Anda boleh menggunakan ciri-ciri cemerlang bahasa Go dan perpustakaan ini untuk melaksanakan protokol MQTT dengan mudah.
2.1 Pasang perpustakaan mqtt
Bahasa Go menyediakan berbilang perpustakaan mqtt, seperti Paho MQTT, Eclipse Paho, dsb. Artikel ini akan menggunakan perpustakaan Eclipse Paho, yang dipasang melalui arahan berikut:
go get github.com/eclipse/paho.mqtt.golang
2.2 Menyambung ke pelayan MQTT
Sebelum menggunakan perpustakaan Eclipse Paho, anda perlu menyambung ke MQTT pelayan proksi. Apabila menyambung, anda perlu memberikan alamat pelayan proksi MQTT, ID pelanggan, nama pengguna, kata laluan dan maklumat lain.
Pustaka MQTT menyediakan jenis ClientOptions dan pilihan sambungan ditetapkan melalui kaedah SetXXX jenis ini, seperti:
opts := mqtt.NewClientOptions().AddBroker("tcp://localhost:1883").SetClientID("go-mqtt") opts.SetUsername("user") opts.SetPassword("password") client := mqtt.NewClient(opts)
Dalam kod di atas, kaedah AddBroker menetapkan proksi MQTT alamat pelayan, dan kaedah SetClientID menetapkan ID klien , SetUsername dan kaedah SetPassword menetapkan maklumat pengesahan sambungan.
2.3 Menerbitkan mesej
Dalam protokol MQTT, penghujung penerbitan mesej ialah klien yang menerbitkan mesej tersebut, subjek dan kandungan mesej perlu disediakan . Pustaka Eclipse Paho menyediakan kaedah Terbitkan untuk menghantar mesej. Seperti yang ditunjukkan di bawah:
token := client.Publish("topic", 0, false, "hello world") token.Wait()
Dalam kod di atas, parameter pertama klien. Kaedah terbitkan ialah nama topik, parameter kedua ialah tahap QoS dan parameter ketiga ialah bendera Kekalkan (benar bermaksud pelayan akan menyimpan mesej terakhir A topik yang sepadan dan menghantarnya apabila topik itu baru dilanggan), parameter keempat ialah badan mesej.
2.4 Melanggan Mesej
Dalam protokol MQTT, bahagian pelanggan mesej perlu menyediakan topik untuk dilanggan dan fungsi panggil balik untuk memproses mesej apabila ia tiba. Pustaka Eclipse Paho menyediakan kaedah Langgan untuk melanggan mesej. Seperti yang ditunjukkan di bawah:
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()
Dalam kod di atas, parameter pertama klien. Kaedah langganan ialah nama topik, parameter kedua ialah tahap QoS dan parameter ketiga ialah fungsi panggil balik, yang akan dipanggil apabila mesej tiba.
Melalui contoh kod di atas, kita dapat melihat bahawa sangat mudah untuk melaksanakan protokol MQTT menggunakan bahasa Go dan pustaka Eclipse Paho. Bahasa Go mempunyai prestasi konkurensi yang baik dan perpustakaan pengaturcaraan rangkaian, dan boleh melaksanakan pelbagai protokol komunikasi rangkaian dengan mudah. Sebagai protokol komunikasi ringan, protokol MQTT digunakan secara meluas dalam bidang Internet of Things Melaksanakan protokol MQTT melalui bahasa Go boleh menyediakan kaedah komunikasi yang lebih cekap, selamat dan boleh dipercayai untuk aplikasi Internet of Things pembangunan Internet Perkara Pada masa hadapan, protokol MQTT dan bahasa Go akan semakin meluas digunakan dalam bidang Internet Perkara.
Atas ialah kandungan terperinci golang melaksanakan mqtt. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!