Partilhar via


Como o Azure Web PubSub dá suporte à biblioteca de Socket.IO?

Este artigo fornece uma perspetiva de engenharia sobre como você pode migrar aplicativos Socket.IO autohospedados para o Azure usando o Web PubSub para Socket.IO com alterações mínimas de código. Em seguida, você pode aproveitar a arquitetura e a implantação simplificadas do aplicativo, ao mesmo tempo em que alcança 100.000 conexões simultâneas. Você não precisa entender tudo neste artigo para usar o Web PubSub para Socket.IO de forma eficaz.

Arquitetura de um aplicativo de Socket.IO auto-hospedado

O diagrama a seguir mostra uma arquitetura típica de um aplicativo Socket.IO auto-hospedado.

Diagram of a typical architecture of a self-hosted Socket.IO app, including clients, servers, a load balancer, and an adapter.

Para garantir que um aplicativo seja escalável e confiável, Socket.IO usuários geralmente têm uma arquitetura que envolve vários servidores Socket.IO. As conexões de cliente são distribuídas entre Socket.IO servidores para equilibrar a carga no sistema.

Uma configuração de vários servidores Socket.IO introduz um desafio quando os desenvolvedores precisam enviar a mesma mensagem para clientes conectados a um servidor diferente. Os desenvolvedores geralmente se referem a esse caso de uso como "mensagens de transmissão".

A recomendação oficial da biblioteca Socket.IO é introduzir um componente do lado do servidor chamado adaptador para coordenar Socket.IO servidores. Um adaptador descobre a quais servidores os clientes estão conectados e instrui esses servidores a enviar mensagens.

Adicionar um componente de adaptador introduz complexidade ao desenvolvimento e à implantação. Por exemplo, se uma arquitetura usa o adaptador Redis, os desenvolvedores precisam:

  • Implemente sessões adesivas.
  • Implante e mantenha instâncias Redis.

O esforço de engenharia e o tempo para criar um canal de comunicação em tempo real distrai os desenvolvedores de trabalhar em recursos que tornam um aplicativo ou sistema único e valioso para os usuários.

O que o Web PubSub para Socket.IO pretende resolver para desenvolvedores

Embora os desenvolvedores geralmente relatem que a configuração de um aplicativo confiável e escalável criado com a biblioteca Socket.IO é um desafio, os desenvolvedores podem se beneficiar das APIs intuitivas e da ampla gama de clientes suportados pela biblioteca. O Web PubSub for Socket.IO se baseia no valor que a biblioteca traz, ao mesmo tempo em que alivia os desenvolvedores da complexidade no gerenciamento de conexões persistentes de forma confiável e em escala.

Na prática, os desenvolvedores podem continuar a usar as APIs da biblioteca Socket.IO sem precisar provisionar recursos do servidor para manter o WebSocket ou conexões baseadas em sondagem longa, que podem exigir muitos recursos. Além disso, os desenvolvedores não precisam gerenciar e implantar um componente do adaptador. O servidor de aplicativos precisa enviar apenas uma única operação, e o Web PubSub para Socket.IO transmite as mensagens para clientes relevantes.

Como funciona

O Web PubSub for Socket.IO se baseia em protocolos Socket.IO implementando o adaptador e o Engine.IO. O diagrama a seguir mostra a arquitetura típica quando você usa o Web PubSub para Socket.IO com o servidor Socket.IO.

Screenshot of a typical architecture of a fully managed Socket.IO app.

Como um aplicativo de Socket.IO auto-hospedado, você ainda precisa hospedar sua lógica de aplicativo Socket.IO em seu próprio servidor. No entanto, com o Web PubSub para Socket.IO serviço:

  • Seu servidor não gerencia mais conexões de cliente diretamente.
  • Seus clientes estabelecem conexões persistentes com o serviço (conexões de cliente).
  • Seus servidores também estabelecem conexões persistentes com o serviço (conexões de servidor).

Quando a lógica do servidor usa send to client, e add client to rooms, broadcastessas operações são enviadas ao serviço por meio de uma conexão de servidor estabelecida. As mensagens do seu servidor são traduzidas para Socket.IO operações que Socket.IO clientes possam entender. Como resultado, qualquer implementação de Socket.IO existente pode funcionar sem grandes modificações. A única modificação que você precisa fazer é alterar o ponto de extremidade ao qual seus clientes se conectam. Para obter mais informações, consulte Migrar um aplicativo Socket.IO autohospedado para ser totalmente gerenciado no Azure.

Quando um cliente se conecta ao serviço, o serviço:

  • Encaminha a conexão Engine.IO (connect) para o servidor.
  • Lida com a atualização de transporte de conexões de cliente.
  • Encaminha todas as mensagens Socket.IO para o servidor.