Eseguire la migrazione di un'app Socket.IO self-hosted per essere completamente gestita in Azure

In questo articolo si esegue la migrazione di un'app di chat Socket.IO ad Azure usando Web PubSub per Socket.IO.

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

  • Un account Azure con una sottoscrizione attiva. Se non si ha un account, è possibile crearne uno gratuito.
  • Una certa familiarità con la libreria di Socket.IO.

Creare una risorsa Web PubSub per Socket.IO

  1. Vai al portale di Azure.

  2. Cercare socket.io e quindi selezionare Web PubSub per Socket.IO.

  3. Selezionare un piano e quindi selezionare Crea.

    Screenshot del servizio Web PubSub per Socket.IO nel portale di Azure.

Eseguire la migrazione dell'app

Per il processo di migrazione in questa guida, si usa un'app di chat di esempio fornita nel sito Web di Socket.IO. Per completare la migrazione, è necessario apportare alcune modifiche secondarie sia al codice lato server che al codice lato client.

Lato server

  1. Individuare index.js nel codice sul lato server.

  2. Aggiungere il pacchetto @azure/web-pubsub-socket.io:

    npm install @azure/web-pubsub-socket.io
    
  3. Importare il pacchetto:

    const { useAzureSocketIO } = require("@azure/web-pubsub-socket.io");
    
  4. Individua nel codice server-side dove hai creato il server Socket.IO e aggiungi useAzureSocketIO(...):

    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.

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

    Importante

    Il useAzureSocketIO metodo è asincrono ed esegue i passaggi di inizializzazione per connettersi a Web PubSub. È possibile usare await useAzureSocketIO(...) o usare useAzureSocketIO(...).then(...) per assicurarsi che il server app inizi a gestire le richieste dopo che l'inizializzazione ha esito positivo.

  5. Se si usano le API server seguenti, aggiungere async prima di usarle, perché sono asincrone con Web PubSub per Socket.IO:

    Ad esempio, se è presente codice simile al seguente:

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

    Aggiornarlo in:

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

    Questo esempio di chat non usa alcuna di queste API. Non è quindi necessario apportare modifiche.

Lato client

  1. Trovare l'endpoint della risorsa nel portale di Azure.

    Screenshot che mostra come ottenere l'endpoint di una risorsa Web PubSub per Socket.IO.

  2. Passare a ./public/main.js nel codice client-side.

  3. Trovare la posizione in cui viene creato il client Socket.IO. Sostituire il relativo endpoint con quello Socket.IO in Azure e aggiungere un'opzione path:

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