Rumah  >  Artikel  >  pembangunan bahagian belakang  >  mqtt maju golang

mqtt maju golang

PHPz
PHPzasal
2023-05-22 13:54:08707semak imbas

Pemajuan MQTT Golang

Dengan kemunculan era Internet Perkara (IoT), komunikasi antara peranti menjadi semakin penting. MQTT (Pengangkutan Telemetri Beratur Mesej) ialah protokol pemesejan ringan yang direka untuk menyediakan mekanisme pertukaran data yang cekap untuk peranti dan aplikasi tanpa had merentas sambungan rangkaian berlebar jalur rendah, kependaman tinggi atau tidak boleh dipercayai. Dalam artikel ini, kami akan meneroka cara menggunakan Golang untuk mencipta pelayan proksi hadapan MQTT supaya peranti berbeza boleh berkomunikasi melalui protokol MQTT.

Kita perlu memasang Golang terlebih dahulu. Setelah pemasangan selesai, kami perlu memasang pakej paho-mqtt, yang merupakan perpustakaan utama yang digunakan untuk berkomunikasi dengan MQTT di Golang. Kami boleh memasangnya dengan arahan berikut:

go get github.com/eclipse/paho.mqtt.golang

Setelah selesai, kami akan mencipta folder projek bernama mqtt-forward, yang termasuk fail Golang bernama main.go. Kami perlu mengimport pakej paho-mqtt ke dalam kod kami:

import (
    "fmt"

    "github.com/eclipse/paho.mqtt.golang"
)

Seterusnya, kami perlu menetapkan pilihan klien MQTT:

opts := mqtt.NewClientOptions().AddBroker("tcp://broker.hivemq.com:1883").SetClientID("mqtt-forward")

Dalam contoh ini kami menyambung ke MQTT awam HiveMQ Untuk proksi, pilih protokol pengangkutan TCP, nombor port ialah 1883, dan tetapkan ID klien kepada "mqtt-forward". Kami juga boleh menetapkan nama pengguna dan kata laluan untuk sambungan MQTT.

Kini kami akan mewujudkan sambungan klien MQTT dan merujuknya melalui klien pemboleh ubah penunjuk jenis mqtt.Pelanggan:

client := mqtt.NewClient(opts)
if token := client.Connect(); token.Wait() && token.Error() != nil {
    panic(token.Error())
}
defer client.Disconnect(250)

Dalam contoh ini kami menggunakan Kaedah mqtt.NewClient(opts) mencipta kaedah baharu versi klien MQTT dan pilihan pas. Selepas menyambung ke pelayan proksi MQTT, kami akan menutup klien MQTT dan menunggu sehingga 250 milisaat untuk memastikan sambungan telah berjaya ditutup. Kata kunci tangguh digunakan untuk melaksanakan kod pembersihan sebelum fungsi kembali, ini memastikan kami menutup klien MQTT dengan betul apabila tidak diperlukan.

Kami juga perlu mencipta fungsi pemprosesan selepas mewujudkan sambungan dengan pelayan MQTT untuk menerima mesej MQTT daripada peranti. Mesej yang diterima dikategorikan mengikut topik MQTT.

func onMessageReceived(client mqtt.Client, message mqtt.Message) {
    fmt.Printf("Received message: %s from topic: %s
", message.Payload(), message.Topic())
}

Dalam contoh ini, kami mencetak muatan (muatan ialah bahagian yang sebenarnya menghantar data) dan topik mesej MQTT yang diterima.

Kini, kita perlu melanggan topik MQTT. Kami boleh menambah fungsi panggil balik kepada klien menggunakan kod berikut:

if token := client.Subscribe("testtopic/#", byte(0), onMessageReceived); token.Wait() && token.Error() != nil {
    panic(token.Error())
}

Dalam contoh ini, kami melanggan semua topik bermula dengan "testtopic". Kami menetapkan QoS kepada bait 0, yang bermaksud mesej yang kami terima dihantar sekali sahaja.

Fungsi utama lengkap kami adalah seperti berikut:

func main() {
    opts := mqtt.NewClientOptions().AddBroker("tcp://broker.hivemq.com:1883").SetClientID("mqtt-forward")
    client := mqtt.NewClient(opts)

    if token := client.Connect(); token.Wait() && token.Error() != nil {
        panic(token.Error())
    }
    defer client.Disconnect(250)

    if token := client.Subscribe("testtopic/#", byte(0), onMessageReceived); token.Wait() && token.Error() != nil {
        panic(token.Error())
    }

    for {
        time.Sleep(time.Second)
    }
}

func onMessageReceived(client mqtt.Client, message mqtt.Message) {
    fmt.Printf("Received message: %s from topic: %s
", message.Payload(), message.Topic())
}

Selepas program bermula, kami akan menyambung kepada broker MQTT pada port 1883 melalui TCP, dan menambah fungsi panggil balik dan melanggan "testtopic ” Semua topik yang bermula dengan. Akhir sekali, kami memasuki gelung tak terhingga supaya kami boleh terus berhubung dan terus menerima mesej MQTT.

Kami boleh menjalankan program Golang menggunakan arahan berikut:

go run main.go

Ringkasnya, kami telah memperkenalkan cara menggunakan Golang dan pakej paho-mqtt untuk mencipta pelayan proksi hadapan MQTT. Dengan memahami cara untuk menyambung ke pelayan broker MQTT dan melanggan topik tertentu untuk menangkap mesej daripada peranti yang berbeza, kami kini telah dapat mendapatkan mesej MQTT daripada cara berpusatkan peranti, yang sangat membantu untuk membina aplikasi IOT.

Atas ialah kandungan terperinci mqtt maju golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:delima ke golangArtikel seterusnya:delima ke golang