Condividi tramite


Eseguire il push dei messaggi dal server

Il modello familiare di richiesta/risposta HTTP è stato progettato per essere facile da usare e scalabile. Tuttavia, al giorno d'oggi gli utenti finali richiedono molto di più dal Web rispetto a quanto originariamente progettato per. Il protocollo HTTP richiede agli utenti di avviare la richiesta per ricevere una risposta. Ma gli sviluppatori hanno bisogno di un modo per inviare dati dal server ai client senza chiedere loro; in altre parole, devono "spingere" i dati ai clienti, come spingere il prezzo di offerta più recente di un prodotto in un sito di aste o prezzi azionari in rapida movimento in un'applicazione finanziaria.

GIF del server applicazioni che esegue il push dei dati al client connesso.

Questa guida introduttiva illustra come

  • sottoscrivere messaggi da un server applicazioni
  • eseguire il push dei dati da un server applicazioni a tutti i client connessi

Importante

Le stringa di connessione non elaborate vengono visualizzate in questo articolo solo a scopo dimostrativo.

Una stringa di connessione include le informazioni sull'autorizzazione necessarie all'applicazione per l'accesso al servizio Azure Web PubSub. La chiave di accesso all'interno della stringa di connessione è simile a una password radice per il servizio. Negli ambienti di produzione proteggere sempre le chiavi di accesso. Usare Azure Key Vault per gestire e ruotare le chiavi in modo sicuro e proteggere la connessione con WebPubSubServiceClient.

Evitare di distribuire le chiavi di accesso ad altri utenti, impostarle come hardcoded o salvarle in un file di testo normale accessibile ad altri. Ruotare le chiavi se si ritiene che siano state compromesse.

Prerequisiti

  • Risorsa PubSub Web. Se non ne è stato creato uno, è possibile seguire le indicazioni seguenti: Creare una risorsa PubSub Web
  • Un editor di codice, ad esempio Visual Studio Code
  • Installare le dipendenze per la lingua che si prevede di usare

Creare un client sottoscrittore

Per sottoscrivere i messaggi inviati dal server applicazioni, un client, ad esempio un browser, un'app per dispositivi mobili o un dispositivo IoT, deve prima connettersi alla risorsa Web PubSub e rimane in ascolto dell'evento di messaggio appropriato.

Creare una directory di progetto denominata subscriber e installare le dipendenze necessarie

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

Connettersi alla risorsa Web PubSub e registrare un listener per l'evento server-message

Un client usa un URL accesso client per connettersi ed eseguire l'autenticazione con la risorsa. Questo URL segue un modello di wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>. Un client può avere alcuni modi per ottenere l'URL accesso client. Per questa guida introduttiva, è possibile copiare e incollare uno da portale di Azure illustrato nel diagramma seguente. È consigliabile non impostare come hardcoded l'URL accesso client nel codice. Nel mondo di produzione viene in genere configurato un server app per restituire questo URL su richiesta. Generare l'URL accesso client descrive in dettaglio la procedura.

Il diagramma mostra come ottenere l'URL di accesso client.

Come illustrato nel diagramma precedente, il client unisce l'hub denominato myHub1.

Nella cartella del subscriber progetto creare un file denominato subscribe.js con il codice seguente

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

Eseguire il programma

node subscribe.js

Ora questo client stabilisce una connessione con la risorsa Web PubSub ed è pronto per ricevere messaggi inviati dal server applicazioni.

Eseguire il push dei messaggi dal server applicazioni

Ora che è stato connesso un client alla risorsa Web PubSub, è possibile eseguire il push dei messaggi da un server applicazioni in qualsiasi momento usando l'SDK server fornito da Web PubSub.

Creare una nuova directory di progetto denominata publisher e installare le dipendenze necessarie

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

Creare un publish.js file con il codice seguente

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

La chiamata server.sendToAll() invia un messaggio a tutti i client connessi in un hub.

Ottenere la stringa di connessione

Importante

Un stringa di connessione include le informazioni di autorizzazione necessarie per l'applicazione per accedere al servizio Web PubSub. La chiave di accesso all'interno della stringa di connessione è simile a una password radice per il servizio.

Per questa guida introduttiva, verrà ottenuto da portale di Azure come illustrato di seguito. Un diagramma mostra come ottenere l'URL di accesso client.

Eseguire il programma server

Eseguire i comandi seguenti in una nuova shell dei comandi.

Le stringa di connessione non elaborate vengono visualizzate in questo articolo solo a scopo dimostrativo. Negli ambienti di produzione proteggere sempre le chiavi di accesso. Usare Azure Key Vault per gestire e ruotare le chiavi in modo sicuro e proteggere la connessione con WebPubSubServiceClient.

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

node publish.js "Hello World"

Osservare i messaggi ricevuti sul lato client

GIF di dimostrazione di un server app che esegue il push dei dati al client connesso.

Provare a eseguire lo stesso programma "subscribe" in più shell di comandi per stimolare più client. Non appena viene eseguito il programma di "pubblicazione", dovrebbero essere visualizzati messaggi recapitati in tempo reale a tutti questi client.

Riepilogo

Questa guida introduttiva illustra quanto sia facile eseguire il push dei messaggi da un server applicazioni a tutti i client connessi in un hub. Inoltre, Web PubSub consente di eseguire il push dei messaggi in

  • un subset dei client in un hub
  • un particolare gruppo in un hub
  • un subset di client in un gruppo

Queste API consentono un'ampia gamma di casi d'uso, consentendo agli sviluppatori di concentrarsi su una logica di business univoca, assicurando al tempo stesso che Web PubSub offre bassa latenza (<100 ms), disponibilità elevata e scalabilità elevata (milioni di connessioni simultanee).

Passaggi successivi

Nel passaggio successivo si esaminerà come usare il sistema eventi di Web PubSub, necessario per compilare applicazioni Web complete.