HTML5 Client: ¿Cuál es la diferencia entre Websockets y XHR?
Websockets es la conexión persistente que se puede utilizar para recibir/enviar datos sin un orden secuencial y sin encabezado http.
Xhr-polling crea una nueva solicitud con el encabezado http y espera la respuesta con el encabezado http, también en orden secuencial.
Al hacerlo, el flujo de datos XHR siempre se ve así:
HTTP_HEADER_RESPUESTA -> HTTP_HEADER_RESPUESTA HTTP_HEADER_RESPUESTA -> HTTP_HEADER_RESPUESTA y así sucesivamente
también antes de que los datos puedan ser descargados, deben ser solicitados con HTTP_HEADER, por lo tanto su nombre: xhr-polling.
El flujo de datos de Websockets puede verse así:
FRAME_DATA_SEND FRAME_DATA_SEND FRAME_DATA_RECEIVE FRAME_DATA_SEND FRAME_DATA_RECEIVE FRAME_DATA_RECEIVE
También se trata de un envío/recepción de datos aleatorios sin un orden secuencial especial y sin ningún dato de encabezado http.
Eso hace que el uso con proxies inversos sea imposible debido a la falta de soporte para Websockets por la mayoría de los proxies inversos conocidos; pero la mitad del transporte xhr puede funcionar con el proxy inverso de Apache.
También vea: Cliente HTML5: Navegadores compatibles