Pular para o conteúdo

HTML5 Client: Qual é a diferença entre Websockets e XHR?

Websockets é a conexão persistente que pode ser usada para receber/enviar dados sem ordem sequencial e sem cabeçalho http.

Xhr-polling cria uma nova solicitação com cabeçalho http e aguarda a resposta com cabeçalho http, também em ordem sequencial.

Fazendo isso, o fluxo de dados XHR sempre se parece com isto:

HTTP_HEADER_REQUEST -> HTTP_HEADER_ANSWER HTTP_HEADER_REQUEST -> HTTP_HEADER_ANSWER e assim por diante

também antes que os dados possam ser baixados, eles devem ser solicitados com HTTP_HEADER, portanto seu nome: xhr-polling.

O fluxo de dados do Websockets pode parecer assim:

DADOS_ENVIO_QUADRO DADOS_ENVIO_QUADRO DADOS_RECEBIMENTO_QUADRO DADOS_ENVIO_QUADRO DADOS_RECEBIMENTO_QUADRO DADOS_RECEBIMENTO_QUADRO

Além disso, é o envio/recebimento de dados aleatórios sem uma ordem sequencial especial e sem nenhum dado de cabeçalho http.

Isso torna o uso com proxies reversos impossível devido à falta de suporte a Websockets pela maioria dos proxies reversos conhecidos; mas metade do transporte xhr pode funcionar com o proxy reverso Apache.

Veja também: Cliente HTML5: Navegadores Suportados