Na postagem do blog NGINX como um proxy WebSocket, discutimos o uso do NGINX para fazer proxy de servidores de aplicativos WebSocket . Neste post, discutiremos alguns dos problemas de arquitetura e infraestrutura a serem considerados ao criar aplicativos em tempo real com WebSocket, incluindo os componentes necessários e como você pode estruturar seus sistemas.
O HTTP funciona bem para aplicativos web baseados em solicitação/resposta, onde o fluxo de comunicação sempre faz com que o cliente inicie a solicitação à qual um servidor de backend responde. Aplicativos web com uma interação mais interativa e baseada em mensagens entre o cliente e o servidor precisam de algo além do simples HTTP. Tentativas anteriores de simular comunicação full-duplex via HTTP eram complicadas e tinham muitas desvantagens. O protocolo WebSocket, juntamente com a interface JavaScript do WebSocket, fornece uma maneira muito mais fácil de criar esses tipos de aplicativos, ao mesmo tempo em que reduz a quantidade de dados transferidos e a latência.
A capacidade de criar uma conexão de soquete full-duplex entre o cliente e o servidor permite o desenvolvimento de aplicativos da web orientados a eventos em tempo real que utilizam comunicações push, poll ou streaming. Usando o WebSocket, o cliente ou o servidor pode iniciar a comunicação após a conexão ser estabelecida. Isso permite muitos tipos de aplicativos da web, incluindo jogos on-line, bate-papo, rastreamento de ações e relatórios em tempo real de resultados esportivos.
Outro caso de uso do WebSocket é o desenvolvimento de aplicativos baseados em WebRTC . O WebRTC é usado para criar aplicativos que fazem comunicações de navegador para navegador. Ele requer um canal de sinalização separado para configuração de comunicações, e o WebSocket é um bom protocolo para isso.
A infraestrutura mínima necessária para um aplicativo Web WebSocket é um navegador cliente executando um aplicativo JavaScript WebSocket e se comunicando com um servidor WebSocket. Os lançamentos recentes de todos os principais navegadores agora oferecem suporte ao WebSocket, mas é importante garantir que os clientes tenham um navegador com suporte ao WebSocket. Existem muitas opções para servidores WebSocket e aqui estão alguns exemplos para diferentes ambientes (esta lista é fornecida para sua conveniência e não constitui endosso da NGINX, Inc.):
É possível usar um único servidor WebSocket, mas o desempenho do aplicativo é limitado pela capacidade do servidor, que também é um único ponto de falha. Muitos aplicativos em tempo real são desenvolvidos com a esperança de uma adoção generalizada, mas pode ser difícil prever a taxa de crescimento. Para dar suporte à crescente popularidade de um aplicativo em tempo real, a infraestrutura deve ser capaz de:
Isso pode ser feito colocando o NGINX na frente dos servidores WebSocket e servidores HTTP (já que a maioria dos aplicativos WebSocket também usa HTTP), para atuar como um proxy reverso e balanceador de carga compatível com WebSocket. Nem todos os proxies reversos fornecem suporte direto para WebSocket. Alguns, como o Elastic Load Balancing (ELB) no ambiente da Amazon Web Services (AWS), precisam ser executados no modo TCP, o que significa que não podem lidar com cabeçalhos HTTP. O Protocolo Proxy foi desenvolvido para lidar com essa limitação e o NGINX também o suporta, o que significa que o WebSocket é totalmente suportado na AWS. Usar o NGINX como um proxy reverso WebSocket traz benefícios adicionais, como flexibilidade de roteamento e a capacidade de o NGINX encerrar conexões SSL.
Uma configuração típica de WebSocket usando NGINX pode ser parecida com esta:
Aqui mostramos uma variedade de clientes de desktop e móveis se conectando a um par de servidores NGINX altamente disponíveis que estão balanceando a carga de um conjunto de servidores HTTP e WebSocket. Esse tipo de configuração pode suportar a falha de um servidor WebSocket ou de um servidor NGINX e você pode facilmente adicionar ou remover servidores WebSocket. Além disso, todos os detalhes de roteamento de como se conectar aos servidores WebSocket ficam ocultos dos clientes, criando uma infraestrutura de aplicativo WebSocket robusta e escalável. O desempenho e a confiabilidade da Web para aplicativos Web em tempo real são essenciais. Entre em contato conosco hoje mesmo para saber como o NGINX Plus pode ajudar a melhorar o desempenho, a confiabilidade e a disponibilidade dos seus aplicativos.
Para mais informações, consulte:
"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."