Zgodnie ze specyfikacjami zawsze klient powinien ustanowić połączenie z serwerem.
Klient:
Program lub urządzenie korzystające z MQTT. Klient zawsze ustanawia połączenie sieciowe z serwerem . To może
Publikuj komunikaty aplikacji, którymi mogą interesować się inni klienci.
Zasubskrybuj, aby poprosić o przesłanie komunikatów aplikacji, które jest zainteresowany
Anuluj subskrypcję, aby usunąć żądanie wiadomości aplikacji.
Odłącz od serwera.
A jeśli ten klient subskrybuje komunikat aplikacji, serwer powinien przekazać te komunikaty do tego konkretnego klienta.
Serwer:
Program lub urządzenie, które działa jako pośrednik między klientami publikującymi komunikaty aplikacji i klientami, którzy dokonali subskrypcji. Serwer
Akceptuje połączenia sieciowe od klientów.
Akceptuje komunikaty aplikacji publikowane przez klientów.
Procesy Subskrybuj i anuluj subskrypcje żądań od klientów.
Przekazuje komunikaty aplikacji pasujące do subskrypcji klienta .
Czy to oznacza, że jeśli klient subskrybuje, to pozostaje podłączony do serwera, dopóki subskrypcja jest ważna, mimo że przez większość czasu nie ma przepływu danych?
Doszedłem do tego wniosku, ponieważ jeśli klient rozłączy się po subskrypcji, to serwer nie może przekazywać do niego wiadomości, ponieważ to klient powinien ustanowić połączenie. Ale nie będzie wiedział, kiedy to przywrócić.