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 (auch Client oder Clientverbindung genannt) stellt eine einzelne WebSocket-Verbindung mit dem Web PubSub-Dienst dar. Wenn die Verbindung erfolgreich hergestellt wurde, wird ihr vom Web PubSub-Dienst eine eindeutige Verbindungs-ID zugewiesen.

  • Hub: Ein Hub ist ein logisches Konzept für eine Gruppe von Clientverbindungen. In der Regel verwenden Sie einen Hub für ein Szenario, z. B. einen Chathub oder einen 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. Obwohl es keine strikte Beschränkung für die Anzahl von Hubs gibt, verbraucht ein Hub mehr Dienstlasten im Vergleich zu einer Gruppe. Es wird empfohlen, über einen vordefinierten Satz von Hubs zu verfügen, 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.

  • Clientverbindung und Verbindungs-ID: Ein Client stellt eine Verbindung mit dem /client-Endpunkt her. Nachdem die Verbindung hergestellt wurde, generiert der Dienst einen eindeutigen connectionId-Wert zur eindeutigen Identifizierung der Clientverbindung. Benutzer können die Clientverbindung dann mit diesem connectionId-Wert verwalten. Einzelheiten finden Sie im Abschnitt Clientprotokoll.

  • 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, ein connected-Ereignis, wenn erfolgreich eine Verbindung mit dem Dienst hergestellt wurde, ein message-Ereignis, wenn Nachrichten an den Dienst gesendet werden und ein disconnected-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, GroupUserId sind wichtige Rollen, wenn Sie Clients verwalten und Nachrichten senden. Sie sind in verschiedenen REST-API-Aufrufen als Nur-Text-Parameter erforderlich. Verwenden Sie daher keine vertraulichen Informationen in diesen Feldern. Beispielsweise Anmeldeinformationen oder Bearertoken, die ein hohes Leckrisiko aufweisen.

Workflow

Hier sehen Sie einen typischen Workflow, der den Dienst verwendet:

Diagram showing the Web PubSub service workflow.

Das obige Workflowdiagramm zeigt Folgendes:

  1. Ein Client stellt über den WebSocket-Transport eine Verbindung mit dem /client-Endpunkt des Diensts her. Der Dienst leitet sämtliche WebSocket-Frames an den konfigurierten Upstream(server) weiter. Über die WebSocket-Verbindung kann eine Verbindung mit einem beliebigen benutzerdefinierten Unterprotokoll hergestellt werden, das der Server verarbeiten soll. Alternativ kann eine Verbindung mit den vom Dienst unterstützten Unterprotokollen (z. B. json.webpubsub.azure.v1) hergestellt werden, wodurch die Clients Nachrichten direkt veröffentlichen oder abonnieren können. Einzelheiten finden Sie unter Clientprotokolle.

  2. 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.

  3. 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.