WebRTC vs WebSocket: peers ou um servidor

WebRTC vs WebSocket

WebRTC vs WebSocket (e webhooks, e HTTP) | We.Inc

WebRTC vs WebSocket: mídia e data channels peer to peer vs um socket cliente-servidor, por que o WebRTC ainda precisa de sinalização, além de webhook vs WebSocket e HTTP vs WebSocket.

O WebSocket mantém uma conexão bidirecional entre o navegador e o seu servidor, e toda mensagem passa por esse servidor. O WebRTC conecta navegadores diretamente entre si para áudio, vídeo e dados arbitrários, com criptografia DTLS e SRTP. Os dois costumam ser usados juntos: um WebSocket transporta as mensagens de sinalização que configuram a chamada WebRTC.

WebRTC e WebSocket comparados

Escolha o que você está construindo no assistente abaixo e ele indica a tecnologia adequada, com o motivo. Ele também cobre as duas dúvidas que as pessoas misturam com esta: webhooks, que vão de servidor para servidor, e requisições HTTP comuns.

Perguntas frequentes

O WebRTC substitui os WebSockets?

Não. O WebRTC não tem um jeito embutido de dois navegadores se encontrarem, então você ainda precisa de um canal para trocar as mensagens de configuração. Um WebSocket é a escolha mais comum, embora a MDN observe que qualquer transporte funciona.

O WebRTC envia dados simples, e não só vídeo?

Sim. RTCPeerConnection.createDataChannel() abre um canal para texto ou dados binários entre peers, e a API dele é propositalmente parecida com a do WebSocket, com send() e um evento message.

Qual é a diferença entre um webhook e um WebSocket?

Um webhook é uma requisição HTTP que um servidor envia para uma URL em outro servidor quando um evento acontece, e depois a conexão termina. Um WebSocket é uma conexão que fica aberta para que navegador e servidor continuem conversando.

O WebSocket é mais rápido que o HTTP?

Para muitas mensagens pequenas, geralmente sim, já que o handshake acontece uma vez e cada mensagem seguinte dispensa os cabeçalhos de requisição. Para carregar uma página ou um arquivo, o HTTP comum é a ferramenta certa e aproveita o cache.

O WebRTC é peer to peer mesmo com muita gente na chamada?

Cada conexão é entre dois peers, então uma malha completa cresce rápido conforme as pessoas entram. Muitos produtos de chamada maiores encaminham a mídia por um servidor que repassa os streams, algo que fica fora da própria API WebRTC do navegador.

Por que o WebRTC ainda precisa de um servidor

Webhook vs WebSocket

HTTP vs WebSocket

Configuração do WebRTC por um WebSocket

Quem liga: crie uma offer e um data channel

O WebSocket só repassa as mensagens de configuração. A URL do STUN é um exemplo para o servidor que você escolher.

Quem recebe: responda e receba o canal

O outro lado recebe o canal pelo evento datachannel em vez de criá-lo.

Um canal sem ordem e sem reenvio para o estado do jogo

maxRetransmits e maxPacketLifeTime não podem ser definidos juntos; escolha um.

Webhook vs WebSocket em resumo

Webhook vs WebSocket

HTTP vs WebSocket em resumo

HTTP vs WebSocket

Chamada de vídeo entre duas pessoas

WebRTC, com um WebSocket para a sinalização

Áudio e vídeo devem ir direto entre os participantes, com pouco atraso. Um pequeno servidor WebSocket só repassa a offer, a answer e os candidatos durante a configuração.

Sala de chat em grupo em um web app

WebSocket

As mensagens precisam ser armazenadas, moderadas e enviadas a todos na sala, então já pertencem ao seu servidor. Um socket por usuário é a solução simples.

Enviar um arquivo grande para o navegador de um amigo

WebRTC data channel

Um data channel confiável e ordenado move os bytes de peer para peer, então o seu servidor nunca armazena nem retransmite o arquivo, a menos que o TURN seja necessário.

Jogadas rápidas de um jogo para dois

WebRTC data channel, sem ordem

Com a ordenação desligada e sem reenvios, uma atualização de posição perdida é ignorada em vez de travar as mais novas. Se você precisa de um servidor árbitro, use um WebSocket até ele.

Provedor de pagamentos confirma um pedido

Webhook

O servidor do provedor chama uma URL no seu servidor quando o pagamento é aprovado. Nenhum navegador participa e nada precisa ficar aberto.

Carregar uma página de produto e seus dados

HTTP comum

Requisição e resposta é tudo de que você precisa, e respostas GET podem ir para o cache. Uma conexão persistente só traria custo, sem benefício.

O que você está construindo?

Escolha um recurso

Use

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site