Menurut spesifikasinya , selalu klien yang harus membuat koneksi ke server.
Klien:
Program atau perangkat yang menggunakan MQTT. Klien selalu membuat Koneksi Jaringan ke Server . Bisa
Publikasikan Pesan Aplikasi yang mungkin diminati oleh Klien lain.
Berlangganan untuk meminta Pesan Aplikasi yang ingin diterima.
Berhenti berlangganan untuk menghapus permintaan untuk Pesan Aplikasi.
Putuskan sambungan dari Server.
Dan jika klien ini berlangganan Pesan Aplikasi, maka server harus meneruskan pesan tersebut ke klien khusus ini.
Server:
Program atau perangkat yang bertindak sebagai perantara antara Klien yang menerbitkan Pesan Aplikasi dan Klien yang telah membuat Langganan. Server
Menerima Koneksi Jaringan dari Klien.
Menerima Pesan Aplikasi yang diterbitkan oleh Klien.
Memproses permintaan Berlangganan dan Berhenti Berlangganan dari Klien.
Meneruskan Pesan Aplikasi yang cocok dengan Langganan Klien .
Apakah ini berarti bahwa jika klien berlangganan, maka ia tetap terhubung ke server sementara berlangganan valid meskipun tidak ada aliran data di sebagian besar waktu?
Saya sampai pada kesimpulan ini karena jika klien terputus setelah berlangganan, maka server tidak dapat meneruskan pesan kepadanya karena itu adalah klien yang harus membuat koneksi. Tetapi tidak akan tahu kapan harus membangun kembali.