Dela via


Push-meddelanden från servern

Den välbekanta HTTP-modellen för begäran/svar har utformats för att vara enkel att arbeta med och skalbar. Men numera slutanvändare kräver mycket mer från webben än den ursprungligen utformades för. HTTP-protokollet kräver att användarna initierar begäran för att få ett svar. Men utvecklare behöver ett sätt att skicka data från servern till klienter utan att de ber om det. Med andra ord måste de "skicka" data till kunder, som att driva det senaste budpriset för en produkt på en auktionswebbplats eller snabba aktiekurser i en finansiell tillämpning.

GIF av programserver som skickar data till ansluten klient.

Den här snabbstartsguiden visar hur du

  • prenumerera på meddelanden från en programserver
  • skicka data från en programserver till alla anslutna klienter

Viktigt!

Råa anslutningssträng visas endast i den här artikeln i demonstrationssyfte.

En anslutningssträng innehåller den auktoriseringsinformation som krävs för att ditt program ska få åtkomst till Azure Web PubSub-tjänsten. Åtkomstnyckeln i anslutningssträng liknar ett rotlösenord för din tjänst. Skydda alltid dina åtkomstnycklar i produktionsmiljöer. Använd Azure Key Vault för att hantera och rotera dina nycklar på ett säkert sätt och skydda anslutningen med WebPubSubServiceClient.

Undvik att distribuera åtkomstnycklar till andra användare, hårdkoda dem eller spara dem var som helst i oformaterad text som är tillgänglig för andra. Rotera dina nycklar om du tror att de har komprometterats.

Förutsättningar

  • En Web PubSub-resurs. Om du inte har skapat någon kan du följa anvisningarna: Skapa en Web PubSub-resurs
  • En kodredigerare, till exempel Visual Studio Code
  • Installera beroendena för det språk som du planerar att använda

Skapa en prenumerantklient

Om du vill prenumerera på meddelanden som skickas från programservern måste en klient, oavsett om det är en webbläsare, en mobilapp eller en IoT-enhet, ansluta till din Web PubSub-resurs först och lyssna efter lämplig meddelandehändelse.

Skapa en projektkatalog med namnet subscriber och installera nödvändiga beroenden

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

Anslut till din Web PubSub-resurs och registrera en lyssnare för server-message händelsen

En klient använder en URL för klientåtkomst för att ansluta och autentisera med din resurs. Den här URL:en följer ett mönster med wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>. En klient kan ha några sätt att hämta URL:en för klientåtkomst. För den här snabbstarten kan du kopiera och klistra in en från Azure Portal som visas i följande diagram. Det är bästa praxis att inte hårdkoda URL:en för klientåtkomst i koden. I produktionsvärlden konfigurerar vi vanligtvis en appserver för att returnera den här URL:en på begäran. Generera URL för klientåtkomst beskriver metoden i detalj.

Diagrammet visar hur du hämtar url:en för klientåtkomst.

Som du ser i diagrammet ovan ansluter klienten hubben med namnet myHub1.

I projektmappen subscriber skapar du en fil med namnet subscribe.js med följande kod

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();

Köra programmet

node subscribe.js

Nu upprättar den här klienten en anslutning till din Web PubSub-resurs och är redo att ta emot meddelanden som skickas från programservern.

Skicka meddelanden från programservern

Nu när du har en klient ansluten till din Web PubSub-resurs kan du skicka meddelanden från en programserver när som helst med hjälp av server-SDK:et som tillhandahålls av Web PubSub.

Skapa en ny projektkatalog med namnet publisher och installera nödvändiga beroenden

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

Skapa en publish.js fil med följande kod

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" });

Samtalet server.sendToAll() skickar ett meddelande till alla anslutna klienter i en hubb.

Hämta anslutningssträngen

Viktigt!

En anslutningssträng innehåller auktoriseringsinformation som krävs för att ditt program ska få åtkomst till Web PubSub-tjänsten. Åtkomstnyckeln i anslutningssträng liknar ett rotlösenord för din tjänst.

I den här snabbstartsguiden får vi den från Azure Portal enligt nedan. Ett diagram visar hur du hämtar url för klientåtkomst.

Kör serverprogrammet

Kör följande kommandon i ett nytt kommandogränssnitt.

Råa anslutningssträng visas endast i den här artikeln i demonstrationssyfte. Skydda alltid dina åtkomstnycklar i produktionsmiljöer. Använd Azure Key Vault för att hantera och rotera dina nycklar på ett säkert sätt och skydda anslutningen med WebPubSubServiceClient.

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

node publish.js "Hello World"

Observera de mottagna meddelandena på klientsidan

GIF för att demonstrera en appserver som skickar data till en ansluten klient.

Prova att köra samma "prenumerera"-program i flera kommandogränssnitt för att stimulera fler än klienter. Så snart "publicera"-programmet körs bör du se meddelanden som levereras i realtid till alla dessa klienter.

Sammanfattning

Den här snabbstarten visar hur enkelt det är att skicka meddelanden från en programserver till alla anslutna klienter i en hubb. Dessutom kan du med Web PubSub skicka meddelanden till

  • en delmängd av klienterna i en hubb
  • en viss grupp i en hubb
  • en delmängd av klienter i en grupp

Dessa API:er möjliggör en mängd användningsfall, vilket gör att utvecklare kan fokusera på unik affärslogik samtidigt som de är säkra på att Web PubSub erbjuder låg svarstid (<100 ms), hög tillgänglighet och massiv skala (miljoner+ samtidiga anslutningar).

Nästa steg

I nästa steg ska vi utforska hur du arbetar med händelsesystemet för Web PubSub, som är nödvändigt för att skapa fullständiga webbprogram.