Migrowanie własnej aplikacji Socket.IO do pełnego zarządzania na platformie Azure

W tym artykule migrujesz aplikację do czatu Socket.IO na platformę Azure przy użyciu usługi Web PubSub dla Socket.IO.

Ważne

Nieprzetworzone parametry połączenia są wyświetlane tylko w tym artykule w celach demonstracyjnych.

parametry połączenia zawiera informacje autoryzacyjne potrzebne Twojej aplikacji, aby uzyskać dostęp do usługi Azure Web PubSub. Klucz dostępu w parametry połączenia działa jak hasło root dla Twojej usługi. W środowiskach produkcyjnych zawsze chroń klucze dostępu. Użyj usługi Azure Key Vault, aby bezpiecznie zarządzać kluczami i obracać je oraz zabezpieczać połączenie za pomocą usługi WebPubSubServiceClient.

Unikaj dystrybuowania kluczy dostępu do innych użytkowników, kodowania ich lub zapisywania ich w dowolnym miejscu w postaci zwykłego tekstu, który jest dostępny dla innych użytkowników. Obracanie kluczy, jeśli uważasz, że mogły one zostać naruszone.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją. Jeśli nie masz, możesz utworzyć bezpłatne konto.
  • Znajomość biblioteki Socket.IO.

Tworzenie usługi Web PubSub dla zasobu Socket.IO

  1. Przejdź do portalu Azure Portal.

  2. Wyszukaj socket.io, a następnie wybierz pozycję Web PubSub dla Socket.IO.

  3. Wybierz plan, a następnie wybierz pozycję Utwórz.

    Zrzut ekranu przedstawiający usługę Web PubSub dla usługi Socket.IO w witrynie Azure Portal.

Migrowanie aplikacji

W przypadku procesu migracji w tym przewodniku użyjesz przykładowej aplikacji czatu udostępnionej w witrynie internetowej Socket.IO. Aby ukończyć migrację, należy wprowadzić drobne zmiany zarówno po stronie serwera, jak i po stronie klienta.

Strona serwera

  1. Znajdź index.js w kodzie po stronie serwera.

  2. @azure/web-pubsub-socket.io Dodaj pakiet:

    npm install @azure/web-pubsub-socket.io
    
  3. Zaimportuj pakiet:

    const { useAzureSocketIO } = require("@azure/web-pubsub-socket.io");
    
  4. Znajdź w kodzie po stronie serwera miejsce, w którym utworzono serwer Socket.IO, i dodaj useAzureSocketIO(...):

    Nieprzetworzone parametry połączenia są wyświetlane tylko w tym artykule w celach demonstracyjnych. W środowiskach produkcyjnych zawsze chroń klucze dostępu. Użyj usługi Azure Key Vault, aby bezpiecznie zarządzać kluczami i obracać je oraz zabezpieczać połączenie za pomocą usługi WebPubSubServiceClient.

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

    Ważne

    Metoda useAzureSocketIO jest asynchroniczna i wykonuje kroki inicjowania w celu nawiązania połączenia z usługą Web PubSub. Możesz użyć await useAzureSocketIO(...) lub useAzureSocketIO(...).then(...), aby upewnić się, że serwer aplikacji zacznie obsługiwać żądania po pomyślnym zakończeniu inicjalizacji.

  5. Jeśli używasz następujących interfejsów API serwera, dodaj async przed ich użyciem, ponieważ działają asynchronicznie w usłudze Web PubSub dla Socket.IO:

    Jeśli na przykład istnieje kod podobny do następującego:

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

    Zaktualizuj go do:

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

    Ten przykład czatu nie używa żadnego z tych interfejsów API. Dlatego nie musisz wprowadzać żadnych zmian.

Strona klienta

  1. Znajdź punkt końcowy zasobu w witrynie Azure Portal.

    Zrzut ekranu przedstawiający sposób uzyskania punktu końcowego dla zasobu Web PubSub for Socket.IO.

  2. Przejdź do ./public/main.js w kodzie po stronie klienta.

  3. Znajdź miejsce utworzenia klienta Socket.IO. Zastąp jego punkt końcowy punktem końcowym Socket.IO w usłudze Azure i dodaj opcję path:

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