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

  • abbonarsi ai messaggi provenienti da un server applicativo
  • 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 di autorizzazione di cui la tua applicazione ha bisogno per accedere al servizio Azure Web PubSub. La chiave di accesso nella stringa di connessione agisce come una password root per il tuo 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. Sostituisci le chiavi se ritieni che possano essere state compromesse.

Prerequisiti

  • Una risorsa Web PubSub. 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 di sottoscrizione

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 di accesso client per connettersi alla risorsa e autenticarsi. Questo URL segue un modello di wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>. Un cliente può ottenere l'URL di accesso del client in diversi modi. Per questa guida introduttiva, è possibile copiare e incollare uno da portale di Azure illustrato nel diagramma seguente. Una buona prassi consiste nel non codificare direttamente nel codice l'URL di accesso client. Nel mondo di produzione viene in genere configurato un server app per restituire questo URL su richiesta. Genera URL di 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.

Messaggi push dal server dell'applicazione

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.

In questa guida introduttiva, lo otterremo dal portale di Azure come illustrato di seguito. Un diagramma mostra come ottenere l'URL di accesso client.

Eseguire il programma server

Eseguite i comandi seguenti in una nuova shell di comando.

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 a

  • un sottoinsieme dei client in un hub
  • un particolare gruppo in un hub
  • un sottoinsieme 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.