WebSocket

A especificação WebSocket define uma API que estabelece conexões "socket" entre um navegador web e um servidor. Em palavras simples: Você pode abrir uma conexão WebSocket simplesmente chamando o construtor WebSocket em JavaScript, e então enviar dados do seu navegador para o servidor chamando o método send() no seu objeto WebSocket. O servidor também pode enviar dados para qualquer cliente conectado assim que esses dados estiverem disponíveis, sem que o cliente os solicite explicitamente.

Os WebSockets são bidireccionais: Eles permitem a comunicação em ambas as direcções ao mesmo tempo. (Em contraste, os pedidos HTTP padrão são unidirecionais: O cliente envia um pedido, e depois o servidor envia uma resposta. O cliente não pode enviar dados adicionais para o servidor até que tenha recebido uma resposta do servidor).

WebSockets são projetados para serem implementados em navegadores e servidores web, mas podem ser usados por qualquer aplicação cliente ou servidor. A WebSocket API é uma tecnologia avançada que torna possível abrir uma sessão de comunicação interativa bidirecional entre o navegador do usuário e um servidor. Com esta API, você pode enviar mensagens para um servidor e receber respostas orientadas a eventos sem ter que pesquisar o servidor para obter uma resposta.

A API do WebSocket está disponível em todos os principais navegadores da Web, e há uma série de implementações de código aberto e de servidores comerciais disponíveis. Como criamos o WebSocket? WebSockets são uma nova tecnologia que permite a comunicação bidireccional entre um cliente e um servidor. Eles são projetados para serem usados em aplicações web que precisam ser capazes de trocar dados em tempo real, tais como aplicações de chat ou jogos online.

Os WebSockets utilizam um protocolo semelhante ao HTTP, mas em vez de utilizar uma única ligação para uma única solicitação/resposta, uma ligação WebSocket permanece aberta e pode ser utilizada para vários ciclos de solicitação/resposta. Isto torna os WebSockets muito mais eficientes do que as conexões HTTP tradicionais.

Criar um servidor WebSocket é relativamente simples. Por exemplo, no Node.js, você pode usar o módulo ws para criar um servidor WebSocket:

var WebSocketServer = require('ws').Server;

var wss = novo WebSocketServer({ porta: 8080 });

wss.on('connection', function(ws) {
ws.on('message', function(message) {
console.log('recebido: %s', message);
});

ws.send('algo');
});

Criar um cliente WebSocket também é simples. Por exemplo, no navegador, você pode usar a WebSocket API para criar uma conexão WebSocket:

var ws = novo WebSocket('ws://localhost:8080');

ws.onopen = function() {
ws.send('something');
};

ws Os WebSockets estão bloqueados pelo firewall? Sim, os WebSockets podem ser bloqueados por firewalls. No entanto, a maioria das configurações de firewall permitem o tráfego do WebSocket. Se você está tendo dificuldades para se conectar a um servidor WebSocket através de um firewall, você pode precisar configurar o firewall para permitir o tráfego do WebSocket. Os WebSockets são mais rápidos que o HTTP? De acordo com um estudo recente, os WebSockets são de facto mais rápidos que o HTTP em termos de latência, com uma latência mediana de 35ms para WebSockets em comparação com 70ms para HTTP. Entretanto, o estudo também descobriu que WebSockets nem sempre são mais rápidos que o HTTP em termos de throughput, com um throughput mediano de 1.2Mbps para WebSockets comparado a 1.4Mbps para HTTP.

O que é WebSocket vs HTTP?

WebSocket é um protocolo que permite sessões de comunicação persistentes de duas vias entre cliente e servidor. HTTP é um protocolo sem estado que é tipicamente usado para comunicação unidirecional do cliente para o servidor.

O WebSocket é projetado para comunicação em tempo real, enquanto o HTTP é projetado para interações de resposta a solicitações. Com o WebSocket, uma vez estabelecida uma conexão, o cliente e o servidor podem enviar mensagens para frente e para trás sem ter que restabelecer a conexão. O HTTP, por outro lado, requer que o cliente faça um novo pedido para cada interação.
O WebSocket é um protocolo full-duplex, o que significa que os dados podem fluir em ambas as direcções ao mesmo tempo. O HTTP, por outro lado, é um protocolo half-duplex, o que significa que os dados só podem fluir em uma direção de cada vez.
O WebSocket usa uma única conexão TCP para todas as comunicações, enquanto o HTTP usa múltiplas conexões TCP. Isto significa que o WebSocket é mais eficiente em termos de largura de banda e recursos.

WebSocket é um protocolo binário, o que significa que os dados são transferidos em formato binário. HTTP é um protocolo de texto, o que significa que os dados são transferidos em forma de texto.

O WebSocket é projetado para uso com aplicações web, e o HTTP é projetado para uso com servidores web.