Partager via


Migrer une application Socket.IO auto-hébergée pour qu’elle soit complètement managée sur Azure

Dans cet article, vous migrez une application de conversation Socket.IO vers Azure en utilisant Web PubSub pour Socket.IO.

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 faire pivoter vos clés en toute sécurité et sécuriser 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

  • Compte Azure avec un abonnement actif. Si vous n’en avez pas, vous pouvez créer un compte gratuit.
  • Une connaissance de la bibliothèque Socket.IO.

Créer une ressource Web PubSub pour Socket.IO

  1. Accédez au portail Azure.

  2. Recherchez socket.io, puis sélectionnez Web PubSub pour Socket.IO.

  3. Sélectionnez un plan, puis sélectionnez Créer.

    Capture d’écran du service Web PubSub pour Socket.IO dans le portail Azure.

Migrer l’application

Pour le processus de migration dans ce guide, vous utilisez un exemple d’application de conversation fourni sur le site web de Socket.IO. Vous devez faire des changements mineurs dans le code à la fois côté serveur et côté client pour terminer la migration.

Côté serveur

  1. Recherchez index.js dans le code côté serveur.

  2. Ajouter le package @azure/web-pubsub-socket.io :

    npm install @azure/web-pubsub-socket.io
    
  3. Importez le package :

    const { useAzureSocketIO } = require("@azure/web-pubsub-socket.io");
    
  4. Localisez le code côté serveur où vous avez créé le serveur Socket.IO, puis ajoutez useAzureSocketIO(...) :

    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 faire pivoter vos clés en toute sécurité et sécuriser votre connexion avec WebPubSubServiceClient.

    const io = require("socket.io")();
    useAzureSocketIO(io, {
        hub: "eio_hub", // The hub name can be any valid string.
        connectionString: process.argv[2]
    });
    

    Important

    La méthode useAzureSocketIO est asynchrone et effectue les étapes d’initialisation pour se connecter à Web PubSub. Vous pouvez utiliser await useAzureSocketIO(...) ou useAzureSocketIO(...).then(...) pour vérifier que votre serveur d’applications commence à servir les demandes après l’initialisation.

  5. Si vous utilisez les API de serveur suivantes, ajoutez async avant de les utiliser, car elles sont asynchrones avec Web PubSub pour Socket.IO :

    Par exemple, s’il y a du code comme le suivant :

    io.on("connection", (socket) => { socket.join("room abc"); });
    

    Mettez-le à jour vers :

    io.on("connection", async (socket) => { await socket.join("room abc"); });
    

    Cet exemple de conversation n’utilise aucune de ces API. Vous n’avez donc pas besoin de faire des changements.

Côté client

  1. Recherchez le point de terminaison de votre ressource sur le portail Azure.

    Capture d’écran de l’obtention du point de terminaison d’une ressource Web PubSub pour Socket.IO.

  2. Accédez à ./public/main.js dans le code côté client.

  3. Recherchez l’emplacement où le client Socket.IO est créé. Remplacez son point de terminaison par le point de terminaison Socket.IO dans Azure, puis ajoutez une option path :

    const socket = io("<web-pubsub-for-socketio-endpoint>", {
        path: "/clients/socketio/hubs/eio_hub",
    });