Поделиться через


Перенос локального приложения Socket.IO для полного управления в Azure

В этой статье вы переносите приложение чата Socket.IO в Azure с помощью Web PubSub для Socket.IO.

Внимание

Необработанные строка подключения отображаются в этой статье только для демонстрационных целей.

Строка подключения содержит сведения об авторизации, требуемые для доступа приложения к службе Azure Web PubSub. Ключ доступа в строке подключения аналогичен паролю привилегированного пользователя для службы. В рабочих средах всегда защищать ключи доступа. Используйте Azure Key Vault для безопасного управления ключами и защиты подключения.WebPubSubServiceClient

Старайтесь не распространять ключи доступа среди других пользователей, жестко программировать их или где-то сохранять в виде обычного текста в открытом доступе для других пользователей. Меняйте свои ключи постоянно, если предполагаете, что они могут быть подобраны.

Необходимые компоненты

  • Учетная запись Azure с активной подпиской. Если ее нет, можно создать бесплатную учетную запись.
  • Некоторые знания о библиотеке Socket.IO.

Создание веб-pubSub для ресурса Socket.IO

  1. Переход на портал Azure.

  2. Найдите socket.io, а затем выберите Web PubSub для Socket.IO.

  3. Выберите план и нажмите кнопку "Создать".

    Снимок экрана: web PubSub для службы Socket.IO в портал Azure.

Перенос приложения

Для процесса миграции в этом руководстве вы используете пример приложения чата, предоставленного на веб-сайте Socket.IO. Для завершения миграции необходимо внести некоторые незначительные изменения в код на стороне сервера и на стороне клиента.

На стороне сервера

  1. Найдите index.js код на стороне сервера.

  2. @azure/web-pubsub-socket.io Добавьте пакет:

    npm install @azure/web-pubsub-socket.io
    
  3. Импортируйте пакет:

    const { useAzureSocketIO } = require("@azure/web-pubsub-socket.io");
    
  4. Найдите в серверном коде, где вы создали сервер Socket.IO, и добавьте useAzureSocketIO(...):

    Необработанные строка подключения отображаются в этой статье только для демонстрационных целей. В рабочих средах всегда защищать ключи доступа. Используйте Azure Key Vault для безопасного управления ключами и защиты подключения.WebPubSubServiceClient

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

    Внимание

    Метод useAzureSocketIO является асинхронным и выполняет шаги инициализации для подключения к Web PubSub. Вы можете использовать или использовать await useAzureSocketIO(...)useAzureSocketIO(...).then(...) , чтобы убедиться, что сервер приложений начинает обслуживать запросы после успешной инициализации.

  5. Если вы используете следующие API-интерфейсы сервера, добавьте async их перед их использованием, так как они асинхронные с Web PubSub для Socket.IO:

    Например, если такой код выглядит следующим образом:

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

    Обновите его до:

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

    В этом примере чата не используется ни один из этих API. Поэтому вам не нужно вносить какие-либо изменения.

На стороне клиента

  1. Найдите конечную точку ресурса в портал Azure.

    Снимок экрана: получение конечной точки в web PubSub для Socket.IO ресурса.

  2. ./public/main.js Перейдите в клиентский код.

  3. Найдите место создания Socket.IO клиента. Замените конечную точку Socket.IO конечной точкой в Azure и добавьте path параметр:

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