Wybieranie protokołu komunikacyjnego urządzenia
Usługa IoT Hub zezwala na używanie następujących protokołów na potrzeby komunikacji po stronie urządzenia:
- MQTT
- MQTT za pośrednictwem obiektów WebSocket
- Advanced Message Queuing Protocol (AMQP)
- AMQP za pośrednictwem obiektów WebSocket
- HTTPS
Uwaga
Usługa IoT Hub ma ograniczoną obsługę funkcji MQTT. Jeśli twoje rozwiązanie wymaga obsługi protokołu MQTT w wersji 3.1.1 lub 5, zalecamy obsługę protokołu MQTT w usłudze Azure Event Grid. Aby uzyskać więcej informacji, zobacz Porównanie obsługi MQTT w usłudze IoT Hub i usłudze Event Grid.
Aby uzyskać informacje o tym, jak te protokoły obsługują określone funkcje usługi IoT Hub, zobacz Wskazówki dotyczące komunikacji urządzenie-chmura i Wskazówki dotyczące komunikacji chmury z urządzeniami.
W poniższej tabeli przedstawiono ogólne zalecenia dotyczące wybranego protokołu:
Protokół | Kiedy należy wybrać ten protokół |
---|---|
MQTT MQTT za pośrednictwem obiektów WebSocket |
Użyj na wszystkich urządzeniach, które nie wymagają połączenia z wieloma urządzeniami, z których każde ma własne poświadczenia dla poszczególnych urządzeń, za pośrednictwem tego samego połączenia TLS. |
AMQP AMQP za pośrednictwem obiektów WebSocket |
Użyj bram w terenie i w chmurze, aby korzystać z multipleksowania połączeń między urządzeniami. |
HTTPS | Służy do obsługi urządzeń, które nie obsługują innych protokołów. |
Podczas wybierania protokołu do komunikacji po stronie urządzenia należy wziąć pod uwagę następujące kwestie:
Wzorzec chmury do urządzenia. Protokół HTTPS nie ma wydajnego sposobu implementowania wypychania serwera. W związku z tym w przypadku korzystania z protokołu HTTPS urządzenia sondować usługę IoT Hub pod kątem komunikatów z chmury do urządzenia. Takie podejście jest nieefektywne zarówno dla urządzenia, jak i usługi IoT Hub. Zgodnie z bieżącymi wytycznymi protokołu HTTPS każde urządzenie powinno sondować komunikaty co 25 minut lub więcej. Wystawianie większej liczby żądań https odbiera wyniki w usłudze IoT Hub. MQTT i AMQP obsługują wypychanie serwera podczas odbierania komunikatów z chmury do urządzenia. Umożliwiają natychmiastowe wypychanie komunikatów z usługi IoT Hub do urządzenia. Jeśli opóźnienie dostarczania jest problemem, MQTT lub AMQP to najlepsze protokoły do użycia. W przypadku rzadko połączonych urządzeń protokół HTTPS również działa.
Bramy pól. Protokół MQTT i HTTPS obsługują tylko jedną tożsamość urządzenia (identyfikator urządzenia i poświadczenia) na połączenie TLS. Z tego powodu te protokoły nie są obsługiwane w scenariuszach bramy pól, które wymagają multipleksowania komunikatów przy użyciu wielu tożsamości urządzeń w ramach jednego połączenia lub puli połączeń nadrzędnych z usługą IoT Hub. Takie bramy mogą używać protokołu obsługującego wiele tożsamości urządzeń na połączenie, takie jak AMQP, dla ruchu nadrzędnego.
Urządzenia z niskimi zasobami. Biblioteki MQTT i HTTPS mają mniejszy rozmiar niż biblioteki AMQP. W związku z tym, jeśli urządzenie ma ograniczone zasoby (na przykład mniej niż 1 MB pamięci RAM), te protokoły mogą być jedyną dostępną implementacją protokołu.
Przechodzenie przez sieć. Standardowy protokół AMQP używa portu 5671, a protokół MQTT nasłuchuje na porcie 8883. Użycie tych portów może powodować problemy w sieciach zamkniętych dla protokołów innych niż HTTPS. Użyj protokołu MQTT za pośrednictwem obiektów WebSocket, AMQP za pośrednictwem obiektów WebSocket lub HTTPS w tym scenariuszu.
Rozmiar ładunku. MQTT i AMQP to protokoły binarne, które powodują bardziej kompaktowe ładunki niż HTTPS.
Ostrzeżenie
W przypadku korzystania z protokołu HTTPS każde urządzenie powinno sondować komunikaty z chmury do urządzenia nie więcej niż raz na 25 minut. W przypadku programowania każde urządzenie może sondować częściej, jeśli jest to konieczne.
Ważne
Następujące funkcje dla urządzeń korzystających z uwierzytelniania urzędu certyfikacji X.509 nie są jeszcze ogólnie dostępne, a tryb podglądu musi być włączony:
- HTTPS, MQTT przez protokoły WebSockets i AMQP za pośrednictwem protokołów WebSocket.
- Przekazywanie plików (wszystkie protokoły).
Te funkcje są ogólnie dostępne na urządzeniach korzystających z uwierzytelniania odcisku palca X.509. Aby dowiedzieć się więcej na temat uwierzytelniania X.509 w usłudze IoT Hub, zobacz Obsługiwane certyfikaty X.509.
Numery portów
Urządzenia mogą komunikować się z usługą IoT Hub na platformie Azure przy użyciu różnych protokołów. Zazwyczaj wybór protokołu jest oparty na określonych wymaganiach rozwiązania. W poniższej tabeli wymieniono porty wychodzące, które muszą być otwarte, aby urządzenie mogło korzystać z określonego protokołu:
Protokół | Port |
---|---|
MQTT | 8883 |
MQTT za pośrednictwem obiektów WebSocket | 443 |
AMQP | 5671 |
AMQP za pośrednictwem obiektów WebSocket | 443 |
HTTPS | 443 |
Adres IP centrum IoT może ulec zmianie bez powiadomienia. Aby dowiedzieć się, jak ograniczyć skutki zmian adresów IP centrum IoT w rozwiązaniu IoT i urządzeniach, zobacz sekcję Najlepsze rozwiązania dotyczące adresów IP usługi IoT Hub.
Następne kroki
Aby uzyskać więcej informacji na temat implementowania protokołu MQTT w usłudze IoT Hub, zobacz Komunikacja z centrum IoT przy użyciu protokołu MQTT.