Condividi tramite


Eseguire il push di messaggi dal server

Il modello di richiesta/risposta HTTP familiare è stato progettato per essere facile da usare e scalabile. Tuttavia, al giorno d'oggi gli utenti finali richiedono molto più dal Web di quanto sia stato 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 il push del prezzo più recente dell'offerta di un prodotto in un sito di aste o i prezzi delle azioni in rapida evoluzione in un'applicazione finanziaria.

GIF del server applicazioni che esegue il push dei dati nel 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

Prerequisiti

  • Risorsa PubSub Web. Se non ne è stata creata una, è 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, sia un browser, un'app per dispositivi mobili o un dispositivo IoT, deve connettersi prima alla risorsa Web PubSub e ascoltare l'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 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 di accesso client. Per questa guida introduttiva, è possibile copiare e incollare uno da portale di Azure illustrato nel diagramma seguente. È consigliabile non eseguire il codice rigido dell'URL di accesso client nel codice. Nel mondo di produzione viene in genere configurato un server app per restituire questo URL su richiesta. Generare l'URL di accesso client descrive in dettaglio la procedura.

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

Come illustrato nel diagramma precedente, il client aggiunge 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

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

Eseguire il push di messaggi dal server applicazioni

Ora che si dispone di un client connesso alla risorsa Web PubSub, è possibile eseguire il push di 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 server.sendToAll() chiamata invia un messaggio a tutti i client connessi in un hub.

Ottenere la stringa di connessione

Importante

Una 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, si otterrà da portale di Azure come illustrato di seguito. Un diagramma illustra come ottenere l'URL di accesso client.

Eseguire il programma server

Eseguire i comandi seguenti in una nuova shell dei comandi.

# 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 nel client connesso.

Provare a eseguire lo stesso programma "sottoscrizione" in più shell di comandi per stimolare più dei client. Non appena viene eseguito il programma "pubblica", verranno visualizzati messaggi recapitati in tempo reale a tutti questi client.

Riepilogo

Questa guida introduttiva illustra come è facile eseguire il push di 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 determinato gruppo in un hub
  • un subset di client in un gruppo

Queste API consentono una vasta gamma di casi d'uso, consentendo agli sviluppatori di concentrarsi sulla logica di business univoca, assicurandosi che Web PubSub offre bassa latenza (100ms), disponibilità elevata e scalabilità elevata (<milioni di connessioni simultanee).

Passaggi successivi

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