Udostępnij przez


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 o autoryzacji wymagane przez aplikację w celu uzyskania dostępu do usługi Azure Web PubSub. Klucz dostępu wewnątrz parametry połączenia jest podobny do hasła głównego 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, na którym utworzono serwer Socket.IO, i dołącz polecenie 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ć polecenia lub użyć await useAzureSocketIO(...)useAzureSocketIO(...).then(...) polecenia , aby upewnić się, że serwer aplikacji zacznie obsługiwać żądania po pomyślnym zainicjowaniu.

  5. Jeśli używasz następujących interfejsów API serwera, dodaj async je przed ich użyciem, ponieważ są one asynchroniczne z usługą 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 pobieranie punktu końcowego do internetowego składnika PubSub dla zasobu Socket.IO.

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

  3. Znajdź miejsce utworzenia klienta Socket.IO. Zastąp punkt końcowy punktem końcowym Socket.IO na platformie Azure i dodaj path opcję:

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