Grundlegende Azure Web PubSub-Konzepte
Der Azure Web PubSub-Dienst ermöglicht die Erstellung von Webanwendungen für Echtzeit-Messaging. Die Clients stellen über das normale WebSocket-Protokoll eine Verbindung mit dem Dienst her, und der Dienst macht REST-APIs und SDKs verfügbar, um diese Clients verwalten zu können.
Begriffe
Nachstehend sind einige wichtige Begriffe aufgeführt, die vom Dienst verwendet werden:
Verbindung: Eine Verbindung, die auch als Client oder Clientverbindung bezeichnet wird, ist eine logische Beziehung zwischen einem Client und dem Web PubSub-Dienst. Über eine „Verbindung“ führen der Client und der Dienst eine Reihe statusbehafteter Interaktionen aus. Verbindungen mit verschiedenen Protokollen verhalten sich möglicherweise auf unterschiedliche Weise. Beispielsweise sind einige Verbindungen auf die Dauer einer Netzwerkverbindung beschränkt, während sich andere über mehrere aufeinander folgende Netzwerkverbindungen zwischen einem Client und dem Dienst erstrecken können.
Hub: Ein Hub ist ein logisches Konzept für eine Gruppe von Clientverbindungen. In der Regel wird jeweils ein Hub für ein einzelnes Szenario verwendet – beispielsweise ein Chathub oder ein Benachrichtigungshub. Eine Clientverbindung wird mit einem Hub hergestellt und gehört während ihrer Lebensdauer zu diesem Hub. Sobald eine Clientverbindung mit dem Hub hergestellt wurde, ist der Hub vorhanden. Von verschiedenen Anwendungen können unterschiedliche Hubnamen verwendet werden, um gemeinsam einen einzelnen Azure Web PubSub-Dienst zu nutzen. Während es keine strikte Beschränkung für die Anzahl der Hubs gibt, verbraucht ein Hub mehr Dienstlast als eine Gruppe. Es wird empfohlen, einen vordefinierten Satz von Hubs zu verwenden, anstatt sie dynamisch zu generieren.
Gruppe: Eine Gruppe ist eine Teilmenge der Verbindungen mit dem Hub. Sie können einer Gruppe eine Clientverbindung hinzufügen und sie jederzeit wieder aus der Gruppe entfernen. Beispiel: Wenn ein Client einem Chatroom beitritt oder wenn ein Client den Chatroom verlässt, kann dieser Chatroom als Gruppe betrachtet werden. Ein Client kann mehreren Gruppen beitreten, und eine Gruppe kann mehrere Clients enthalten. Die Gruppe ist wie eine „Gruppensitzung“. Die Gruppensitzung wird erstellt, sobald jemand der Gruppe beigetreten ist, und die Sitzung wird entfernt, wenn sich niemand in der Gruppe befindet. Nachrichten, die an die Gruppe gesendet werden, werden an alle Clients übermittelt, die mit der Gruppe verbunden sind.
Benutzer: Verbindungen mit Web PubSub können zu einem einzelnen Benutzer gehören. Ein Benutzer kann über mehrere Verbindungen verfügen, etwa, wenn ein einzelner Benutzer über mehrere Geräte oder mehrere Browsertabs verbunden ist.
Nachricht: Wenn der Client verbunden ist, kann er Nachrichten an die Upstreamanwendung senden oder Nachrichten von der Upstreamanwendung über die WebSocket-Verbindung empfangen. Nachrichten können im Nur-Text-, Binär- oder JSON-Format vorliegen und eine maximale Größe von 1 MB aufweisen.
Clientereignisse: Ereignisse werden während des Lebenszyklus einer Clientverbindung erstellt. Eine einfache WebSocket-Clientverbindung erstellt z. B. ein
connect
-Ereignis, wenn versucht wird, eine Verbindung mit dem Dienst herzustellen, einconnected
-Ereignis, wenn erfolgreich eine Verbindung mit dem Dienst hergestellt wurde, einmessage
-Ereignis, wenn Nachrichten an den Dienst gesendet werden und eindisconnected
-Ereignis, wenn die Verbindung mit dem Dienst getrennt wird. Einzelheiten zu Clientereignissen finden Sie im Abschnitt Clientprotokoll.Ereignishandler: Der Ereignishandler enthält die Logik zum Behandeln der Clientereignisse. Ereignishandler sollten vorab über das Portal oder über die Azure CLI im Dienst registriert und konfiguriert werden. Einzelheiten finden Sie im Abschnitt Ereignishandler.
Ereignislistener (Vorschau): Der Ereignislistener lauscht nur auf die Clientereignisse, kann aber die Lebensdauer Ihrer Clients nicht durch ihre Antwort beeinflussen. Ausführliche Informationen finden Sie im Abschnitt Ereignislistener.
Server: Der Server kann Clientereignisse verarbeiten, Clientverbindungen verwalten oder Nachrichten in Gruppen veröffentlichen. Sowohl der Ereignishandler als auch der Ereignislistener gelten als serverseitig. Einzelheiten zum Server finden Sie im Abschnitt Serverprotokoll.
Wichtig
Hub
, Group
und UserId
sind wichtige Rollen, wenn Sie Clients verwalten und Nachrichten senden. Sie sind in verschiedenen REST-API-Aufrufen als Nur-Text-Parameter erforderlich. Platzieren Sie KEINE vertraulichen Informationen in diese Felder. Beispielsweise Anmeldeinformationen oder Bearertokens, die ein hohes Risiko einer Datenpreisgabe aufweisen.
Workflow
Hier sehen Sie einen typischen Workflow, der den Dienst verwendet:
Das obige Workflowdiagramm zeigt Folgendes:
Ein Client stellt über den WebSocket-Transport eine Verbindung mit einem Hub im Dienst her. Der Dienst kann die Nachrichten an den konfigurierten Upstream-(Server) weiterleiten oder die Nachrichten eigenständig verarbeiten und es den Clients ermöglichen, pub/sub direkt durchzuführen, je nach dem vom Client verwendeten Protokoll. Einzelheiten finden Sie unter Clientprotokolle.
Der Dienst ruft bei verschiedenen Clientereignissen den Server über das CloudEvents-Protokoll auf. CloudEvents ist eine standardisierte und protokollunabhängige Definition der Struktur und Metadatenbeschreibung von Ereignissen, die von der Cloud Native Computing Foundation (CNCF) gehostet werden. Einzelheiten finden Sie unter Serverprotokoll.
Der Server kann den Dienst mithilfe der REST-API aufrufen, um Nachrichten an Clients zu senden oder die verbundenen Clients zu verwalten. Einzelheiten finden Sie unter Serverprotokoll.