Partager via


Envoyer (push) des messages à partir du serveur

Le modèle de requête/réponse HTTP familier a été conçu pour être facile à utiliser et évolutif. Cependant, de nos jours, les utilisateurs finaux demandent beaucoup plus du web qu’il n’a été conçu à l’origine. Le protocole HTTP exige que les utilisateurs lancent la demande afin de recevoir une réponse. Mais les développeurs ont besoin d’un moyen d’envoyer des données du serveur aux clients sans qu’ils le demandent ; en d’autres termes, ils doivent « envoyer » des données aux clients, comme pousser le dernier prix d’enchère d’un produit sur un site d’enchères ou les cours d’actions qui évoluent rapidement dans une application financière.

GIF d’application serveur envoyant des données au client connecté.

Ce guide de démarrage rapide montre comment effectuer les opérations suivantes

  • s’abonner aux messages d’un serveur d’applications
  • envoyer des données d’un serveur d’applications à tous les clients connectés

Important

Des chaînes de connexion brutes sont utilisées dans cet article uniquement à des fins de démonstration.

Une chaîne de connexion contient les informations d’autorisation requises pour que votre application accède au service Azure Web PubSub. La clé d’accès à l’intérieur dans la chaîne de connexion est semblable à un mot de passe racine pour votre service. Dans les environnements de production, protégez toujours vos clés d’accès. Utilisez Azure Key Vault pour gérer et permuter vos clés de façon sécurisée, et sécurisez votre connexion avec WebPubSubServiceClient.

Évitez de distribuer des clés d’accès à d’autres utilisateurs, de les coder en dur ou de les enregistrer en texte brut dans un emplacement accessible à d’autres personnes. Effectuez une rotation de vos clés si vous pensez qu’elles ont pu être compromises.

Prérequis

  • Une ressource Web PubSub. Si vous n’en avez pas créé, vous pouvez suivre les instructions suivantes : Créer une ressource Web PubSub
  • Un éditeur de code, comme Visual Studio Code.
  • Installer les dépendances pour la langue que vous envisagez d’utiliser

Créer un client abonné

Pour vous abonner aux messages envoyés à partir de votre serveur d’applications, un client, qu’il s’agit d’un navigateur, d’une application mobile ou d’un appareil IoT, doit d’abord se connecter à votre ressource Web PubSub et écouter l’événement de message approprié.

Créez un répertoire de projet appelé subscriber et installez les dépendances requises

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

Connectez-vous à votre ressource Web PubSub et inscrivez un écouteur pour l’événement server-message

Un client utilise une URL d’accès client pour se connecter et s’authentifier auprès de votre ressource. Cette URL suit le modèle wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>. Un client peut disposer de plusieurs façons pour obtenir l’URL d’accès au client. Pour ce démarrage rapide, vous pouvez en copier et coller un à partir du Portail Azure illustré dans le diagramme suivant. Il est recommandé de ne pas coder en dur l’URL d’accès client. Dans un environnement de production, un serveur d’applications est généralement configuré pour renvoyer cette URL à la demande. Générer une URL d’accès client décrit la pratique en détail.

Le diagramme montre comment obtenir l’URL d’accès au client.

Comme indiqué dans le diagramme ci-dessus, le client joint le hub nommé myHub1.

Dans le dossier du projet subscriber, créez un fichier nommé subscribe.js avec le code suivant

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

Exécuter le programme

node subscribe.js

À présent, ce client établit une connexion avec votre ressource Web PubSub et est prêt à recevoir des messages envoyés à partir de votre serveur d’applications.

Messages push à partir de votre serveur d’applications

Maintenant qu’un client a connecté votre ressource Web PubSub, vous pouvez envoyer des messages à partir d’un serveur d’applications à tout moment à l’aide du Kit de développement logiciel (SDK) du serveur fourni par Web PubSub.

Créez un nouveau répertoire de projet appelé publisher et installez les dépendances requises

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

Créez un fichier publish.js avec le code suivant

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

L’appel server.sendToAll() envoie un message à tous les clients connectés dans un hub.

Obtenir la chaîne de connexion

Important

Une chaîne de connexion contient les informations d’autorisation requises pour que votre application accède au service Web PubSub. La clé d’accès à l’intérieur dans la chaîne de connexion est semblable à un mot de passe racine pour votre service.

Pour ce guide de démarrage rapide, nous allons l’obtenir à partir de Portail Azure comme indiqué ci-dessous. Un diagramme montre comment obtenir l’URL d’accès au client.

Exécuter le programme serveur

Exécutez les commandes suivantes dans un nouvel interpréteur de commandes.

Des chaînes de connexion brutes sont utilisées dans cet article uniquement à des fins de démonstration. Dans les environnements de production, protégez toujours vos clés d’accès. Utilisez Azure Key Vault pour gérer et permuter vos clés de façon sécurisée, et sécurisez votre connexion avec WebPubSubServiceClient.

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

node publish.js "Hello World"

Observer les messages reçus côté client

GIF de démonstration d’une application serveur envoyant des données au client connecté.

Essayez d’exécuter le même programme « s’abonner » dans plusieurs interpréteurs de commandes pour stimuler plus que les clients. Dès que le programme « publier » est exécuté, vous devriez voir des messages remis en temps réel à tous ces clients.

Récapitulatif

Ce guide de démarrage rapide montre à quel point il est facile d’envoyer des messages d’un serveur d’applications à tous les clients connectés dans un hub. En outre, Web PubSub vous permet d’envoyer des messages vers

  • un sous-ensemble des clients dans un hub
  • un groupe particulier dans un hub
  • un sous-ensemble de clients dans un groupe

Ces API permettent un grand nombre de cas d’usage, ce qui permet aux développeurs de se concentrer sur une logique métier unique tout en étant assurés que Web PubSub offre une faible latence (<100 ms), une haute disponibilité et une grande échelle (plus de millions de connexions simultanées).

Étapes suivantes

À l’étape suivante, nous allons explorer comment utiliser le système d’événements de Web PubSub, nécessaire pour créer des applications web complètes.