Compartir a través de


Migración de una aplicación de Socket.IO autohospedada para que se administre completamente en Azure

En este artículo, migrará una aplicación de chat de Socket.IO a Azure mediante Web PubSub para Socket.IO.

Importante

Las cadenas de conexión sin procesar solo aparecen en este artículo con fines de demostración.

Una cadena de conexión incluye la información de autorización necesaria para que la aplicación acceda al servicio Azure Web PubSub. La clave de acceso dentro de la cadena de conexión es similar a una contraseña raíz para el servicio. En entornos de producción, proteja siempre las claves de acceso. Use Azure Key Vault para administrar y rotar las claves de forma segura y proteja la conexión con WebPubSubServiceClient.

Evite distribuirlas a otros usuarios, codificarlas de forma rígida o guardarlas en un archivo de texto sin formato al que puedan acceder otros usuarios. Rote sus claves si cree que se han puesto en peligro.

Requisitos previos

  • Una cuenta de Azure con una suscripción activa. En caso de no tener ninguna, puede crear una gratis.
  • Conocimientos de la biblioteca de Socket.IO.

Creación de un recurso de Web PubSub para Socket.IO

  1. Vaya a Azure Portal.

  2. Busque socket.ioy seleccione Web PubSub para Socket.IO.

  3. Seleccione un plan y, a continuación, seleccione Crear.

    Captura de pantalla del servicio Web PubSub para Socket.IO en Azure Portal.

Migración de la aplicación

Para el proceso de migración de esta guía, usará una aplicación de chat de ejemplo proporcionada en Sitio web de Socket.IO. Debe realizar algunos cambios menores en el código del lado servidor y del lado cliente para completar la migración.

En el servidor

  1. Busque index.js en el código del lado servidor.

  2. Incorporación del paquete @azure/web-pubsub-socket.io:

    npm install @azure/web-pubsub-socket.io
    
  3. Importe el paquete:

    const { useAzureSocketIO } = require("@azure/web-pubsub-socket.io");
    
  4. Busque en el código del lado servidor donde creó el servidor de Socket.IO y anexe useAzureSocketIO(...):

    Las cadenas de conexión sin procesar solo aparecen en este artículo con fines de demostración. En entornos de producción, proteja siempre las claves de acceso. Use Azure Key Vault para administrar y rotar las claves de forma segura y proteja la conexión 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

    El método useAzureSocketIO es asincrónico y realiza los pasos de inicialización para conectarse a Web PubSub. Puede usar await useAzureSocketIO(...) o usar useAzureSocketIO(...).then(...) para asegurarse de que el servidor de aplicaciones comienza a atender solicitudes después de que la inicialización se realice correctamente.

  5. Si usa las siguientes API de servidor, agregue async antes de usarlas, ya que son asincrónicas con Web PubSub para Socket.IO:

    Por ejemplo, si hay código similar al siguiente:

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

    Actualícelo a:

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

    En este ejemplo de chat no se usa ninguna de esas API. Por lo tanto, no es necesario realizar ningún cambio.

En el cliente

  1. Busque el punto de conexión al recurso en Azure Portal.

    Captura de pantalla de cómo obtener el punto de conexión a un web PubSub para Socket.IO recurso.

  2. Vaya a ./public/main.js en el código del lado cliente.

  3. Busque dónde se crea el cliente Socket.IO. Reemplace su punto de conexión por el punto de conexión de Socket.IO en Azure y agregue una opción de path:

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