2010-09-01 13 views
18

Esto es más de una pregunta n00b, pero nunca he sabido la respuesta.¿Por qué necesitamos web-sockets?

entonces, ¿por qué necesitamos el protocolo websockets?

y, ¿cuáles son las ventajas sobre el uso de HTTP de tipo cometa/encuesta larga/estilo colgante?

Respuesta

17

Comet y Ajax pueden ofrecer experiencias de usuario final que proporcionan funcionalidad de escritorio y baja latencia percibida por el usuario, solo Web Sockets cumple la promesa de proporcionar un medio nativo para transmitir de manera precisa y eficiente eventos hacia y desde el navegador con latencia insignificante.

Con el sondeo, realiza solicitudes innecesarias y, como resultado, muchas conexiones se abren y cierran innecesariamente en situaciones de baja tasa de mensajes (al enviar encuestas, envía solicitudes HTTP a intervalos regulares e inmediatamente recibe una respuesta)

Los sockets web eliminan la sobrecarga y reducen drásticamente la complejidad.

+8

Web de enchufe son AJAX vivo-actualización se hace bien :) – Lethargy

+0

@Lethargy su comentario hizo toda la charla técnica anterior tiene sentido ... gracias :) –

0

No está claro si las necesitamos. En el escenario de enviar eventos al cliente, una página puede hacer que las solicitudes AJAX GET comunes se encuentren en un bucle, y el servidor puede "colgar" hasta que los eventos estén disponibles. Después de algunos tiempos de espera, el servidor puede devolver una respuesta "sin eventos" para que el cliente se vuelva a conectar. Durante el período en que la conexión está abierta y el cliente está esperando una respuesta, existe un canal de envío efectivo desde el servidor al cliente.

El período de tiempo de espera puede ajustarse para reducir la cantidad de reconexiones innecesarias, aunque normalmente no puede ser infinito porque la mayoría de las estructuras de servidor terminarán el proceso del lado del servidor si parece haber permanecido demasiado tiempo.

Dada esta capacidad existente, la pregunta es: ¿un nuevo marco de comunicación realmente agrega un valor significativo sobre lo que ya se puede hacer? Realmente no habilitaría algo que no se puede hacer. Solo lo mejoraría levemente.

+1

¿Cómo poner en práctica algo como un cliente BitTorrent o un cliente VNC usando 'XmlHttpRequest'? –

+0

Implementarías algo así como ellos cocinando un protocolo análogo sobre HTTP. Para bromear, una vez hice un proxy de túnel de socket a través de HTTP, donde uno de los lados publicaba los datos en una aplicación web y el otro lado los leía y los transportaba, simulando así una secuencia en términos de muchas transacciones HTTP separadas. Para mi sorpresa, en realidad era bastante útil como conducto para las sesiones de Microsoft Remote Desktop. Cualquier protocolo existente podría ser imitado de esa manera. El por qué querrías hacerlo es otra pregunta. –

+1

Velocidad y simplicidad. Las solicitudes AJAX GET en un bucle son un hack feo y lento para proporcionar lo mismo que los websockets proporcionan de forma limpia y elegante. Sí por favor. –

8

1-WebSocket es un naturalmente-duplex completo, bidireccional, conexión de un solo socket. Con WebSocket, su solicitud HTTP se convierte en una solicitud única para abrir una conexión WebSocket y reutiliza la misma conexión del cliente al servidor y del servidor al cliente.

2-WebSocket reduce la latencia. Por ejemplo, a diferencia de las encuestas, WebSocket realiza una única solicitud. El servidor no necesita esperar una solicitud del cliente . Del mismo modo, el cliente puede enviar mensajes al servidor en cualquier momento. Esta solicitud única de reduce en gran medida la latencia sobre el sondeo, que envía una solicitud a intervalos, independientemente de de si los mensajes están disponibles.

3-WebSocket hace que la comunicación en tiempo real sea mucho más eficiente. Siempre puede usar el sondeo (y, a veces, incluso la transmisión) a través de HTTP para recibir notificaciones de a través de HTTP. Sin embargo, WebSocket ahorra ancho de banda, potencia de CPU y latencia. WebSocket es una innovación en el rendimiento.

4-WebSocket es un protocolo de red subyacente que le permite construir otros protocolos estándar encima.

5 WebSocket es parte de un esfuerzo para proporcionar capacidades avanzadas para aplicaciones HTML5 en fin de competir con otras plataformas.

6-WebSocket es la simplicidad

Cuestiones relacionadas