Freigeben über


Pushnachrichten vom Server

Das vertraute HTTP-Anforderungs-/Antwortmodell wurde so konzipiert, dass es einfach zu bedienen und skalierbar ist. Heutzutage stellen Endbenutzer jedoch viel höhere Anforderungen an das Web, als ursprünglich vorgesehen war. Das HTTP-Protokoll erfordert, dass Benutzer die Anforderung initiieren, um eine Antwort zu erhalten. Entwickler benötigen jedoch eine Möglichkeit, Daten ohne Anforderung vom Server an Clients zu senden. Mit anderen Worten, sie müssen Daten an Kunden „pushen“, z. B. den aktuellsten Gebotspreis eines Produkts auf einer Auktionswebsite oder sich schnell ändernde Aktienkurse in einer Finanzanwendung.

GIF, das illustriert, wie der Anwendungsserver Daten an verbundene Clients pusht.

In dieser Schnellstartanleitung wird veranschaulicht, wie Sie

  • Nachrichten von einem Anwendungsserver abonnieren
  • Daten von einem Anwendungsserver auf alle verbundenen Clients pushen

Wichtig

Unformatierte Verbindungszeichenfolgen werden in diesem Artikel nur zu Demonstrationszwecken angezeigt.

Eine Verbindungszeichenfolge enthält die Autorisierungsinformationen, die Ihre Anwendung für den Zugriff auf den Azure Web PubSub-Dienst benötigt. Der Zugriffsschlüssel in der Verbindungszeichenfolge ähnelt einem Stammkennwort für Ihren Dienst. Schützen Sie Ihre Zugriffsschlüssel in Produktionsumgebungen immer sorgfältig. Verwenden Sie Azure Key Vault zum sicheren Verwalten und Rotieren Ihrer Schlüssel und zum Schützen Ihrer Verbindung mit WebPubSubServiceClient.

Geben Sie Zugriffsschlüssel nicht an andere Benutzer weiter, vermeiden Sie das Hartcodieren, und speichern Sie die Schlüssel nicht als Klartext, auf den andere Benutzer Zugriff haben. Rotieren Sie die Schlüssel, wenn Sie glauben, dass sie möglicherweise gefährdet sind.

Voraussetzungen

  • Eine Web PubSub-Ressource. Wenn Sie noch keine Ressource erstellt haben, können Sie dieser Anleitung folgen: Erstellen einer Web PubSub-Ressource
  • Ein Code-Editor wie Visual Studio Code
  • Installieren der Abhängigkeiten für die Sprache, die Sie verwenden möchten

Erstellen eines Abonnentenclients

Um Nachrichten zu abonnieren, die von Ihrem Anwendungsserver gepusht werden, muss ein Client, sei es ein Browser, eine mobile App oder ein IoT-Gerät, zuerst eine Verbindung mit Ihrer Web PubSub-Ressource herstellen und auf ein entsprechendes Nachrichtenereignis warten.

Erstellen Sie zuerst ein Projektverzeichnis namens subscriber und installieren Sie die erforderlichen Abhängigkeiten

mkdir subscriber
cd subscriber
npm init -y
    
# The client SDK is available as a module on NPM
npm install @azure/web-pubsub-client

Stellen Sie eine Verbindung mit Ihrer Web PubSub-Ressource her und registrieren Sie einen Listener für das Ereignis server-message

Ein Client verwendet eine Clientzugriffs-URL, um eine Verbindung herzustellen und sich mit dem Dienst zu authentifizieren. Diese URL folgt dem Muster wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>. Ein Client kann die Clientzugriffs-URL mit verschiedenen Methoden abrufen. Für diese Schnellstartanleitung können Sie die im folgenden Diagramm gezeigte Datei aus dem Azure-Portal kopieren und einfügen. Es empfiehlt sich, die Clientzugriffs-URL in Ihrem Code nicht hart zu codieren. In der Produktionswelt richten wir normalerweise einen App-Server ein, um diese URL bei Bedarf zurückzugeben. Unter Generate Client Access URL (Generieren der URL für den Clientzugriff) wird die Vorgehensweise ausführlich beschrieben.

Darstellung des Abrufs einer Clientzugriffs-URL

Wie im obigen Diagramm gezeigt, verbindet sich der Client mit dem Hub namens myHub1.

Erstellen Sie im Projektordner subscriber eine Datei mit dem Namen subscribe.js und dem folgenden Code

const { WebPubSubClient } = require("@azure/web-pubsub-client");

// Instantiates the client object
// <client-access-url> is copied from Azure portal mentioned above
const client = new WebPubSubClient("<client-access-url>")

// Registers a handler for the "server-message" event
client.on("server-message", (e) => {
    console.log(`Received message ${e.message.data}`)
});

// Before a client can receive a message, 
// you must invoke start() on the client object.
client.start();

Ausführen des Programms

node subscribe.js

Nun stellt dieser Client eine Verbindung mit Ihrer Web PubSub-Ressource her und kann Nachrichten empfangen, die von Ihrem Anwendungsserver gepusht wurden.

Pushnachrichten von Ihrem Anwendungsserver

Nachdem Sie Ihren Client mit Ihrer Web PubSub-Ressource verbunden haben, können Sie jederzeit Nachrichten über das von Web PubSub bereitgestellte Server-SDK von einem Anwendungsserver pushen.

Erstellen eines neuen Projektverzeichnisses mit dem Namen publisher und Installieren der erforderlichen Abhängigkeiten

mkdir publisher
cd publisher

npm init

# This command installs the server SDK from NPM, 
# which is different from the client SDK you used in subscribe.js
npm install --save @azure/web-pubsub

Erstellen Sie eine Datei publish.js mit dem folgenden Code

const { WebPubSubServiceClient } = require('@azure/web-pubsub');

// This is the hub name we used on Azure portal when generating the Client Access URL. 
// It ensures this server can push messages to clients in the hub named "myHub1".
const hub = "myHub1";
    
let server = new WebPubSubServiceClient(process.env.WebPubSubConnectionString, hub);

// By default, the content type is `application/json`. 
// Specify contentType as `text/plain` for this demo.
server.sendToAll(process.argv[2], { contentType: "text/plain" });

Der Aufruf server.sendToAll() sendet eine Nachricht an alle verbundenen Clients in einem Hub.

Abrufen der Verbindungszeichenfolge

Wichtig

Eine Verbindungszeichenfolge enthält die Autorisierungsinformationen, die Ihre Anwendung für den Zugriff auf den Azure Web PubSub-Dienst benötigt. Der Zugriffsschlüssel in der Verbindungszeichenfolge ähnelt einem Stammkennwort für Ihren Dienst.

In dieser Schnellstartanleitung erhalten wir ihn wie unten gezeigt vom Azure-Portal. Darstellung des Abrufs einer Clientzugriffs-URL.

Ausführen des Serverprogramms

Führen Sie die folgenden Befehle in einer neuen Befehlsshell aus.

Unformatierte Verbindungszeichenfolgen werden in diesem Artikel nur zu Demonstrationszwecken angezeigt. Schützen Sie Ihre Zugriffsschlüssel in Produktionsumgebungen immer sorgfältig. Verwenden Sie Azure Key Vault zum sicheren Verwalten und Rotieren Ihrer Schlüssel und zum Schützen Ihrer Verbindung mit WebPubSubServiceClient.

# Set the environment variable for your connection string.
export WebPubSubConnectionString="<Put your connection string here>" 

node publish.js "Hello World"

Beobachten der empfangenen Nachrichten auf der Clientseite

GIF, das illustriert, wie ein Appserver Daten an verbundene Clients pusht.

Versuchen Sie, dasselbe „Subscribe“-Programm in mehreren Befehlsshells auszuführen, um mehr als Clients zu stimulieren. Sobald das Programm „Veröffentlichen“ ausgeführt wird, sollten Nachrichten in Echtzeit an alle diese Clients übermittelt werden.

Zusammenfassung

In dieser Schnellstartanleitung wird veranschaulicht, wie einfach Nachrichten von einem Anwendungsserver an alle verbundenen Clients in einem Hub gepusht können. Darüber hinaus ermöglicht Web PubSub das Pushen von Nachrichten an

  • eine Teilmenge von Clients in einem Hub
  • eine bestimmte Gruppe in einem Hub
  • eine Teilmenge von Clients in einer Gruppe

Diese APIs ermöglichen eine Vielzahl von Anwendungsfällen, sodass Entwickler sich auf eine einzigartige Geschäftslogik konzentrieren können, während Sie sicher sein können, dass Web PubSub eine geringe Latenz (<100 ms),Hochverfügbarkeit und eine massive Skalierung (mehrere Millionen gleichzeitige Verbindungen) bietet.

Nächste Schritte

Im nächsten Schritt erfahren Sie, wie Sie mit dem Ereignissystem von Web PubSub arbeiten, das zum Erstellen vollständiger Webanwendungen erforderlich ist.