2009-09-20 12 views
11

Escuché acerca de la Interfaz Web Sockets en la especificación del archivo HTML a partir de una pregunta relevante here.
¡Parece muy prometedor!
No entiendo cómo funciona, ¿todavía usa el protocolo HTTP y funciona a su alrededor o funciona algo como sockets TCP?¿Cómo funciona la Interfaz web de sockets HTML5?

Respuesta

2

El protocolo Web Socket es un protocolo basado en TCP, pero está diseñado para degradarse a HTTP. También hay un protocolo de enlace HTTP que le pide al servidor que actualice al protocolo Web Sockets. Entonces, si el servidor lo admite, se usará una conexión TCP dúplex, de lo contrario recurrirá a HTTP y el cometa lo pirateará.

+0

La última vez que vi las especificaciones del protocolo WebSocket, no hubo forma de degradar automáticamente a HTTP. ¿Dónde se agregó eso? – EricLaw

+0

WebSockets (¿usado?) Son compatibles con NTP, un protocolo apagado en los años 80. – Christian

7

No es HTTP, ni es sockets TCP simples. Está diseñado para obtener la baja sobrecarga de las conexiones de socket regulares (AJAX/COMET tienen una sobrecarga muy alta), pero sin sacrificar algunos de los principios de seguridad del navegador que se han desarrollado en los últimos años.

El saludo inicial de WebSockets se parece mucho a HTTP. Esto facilitará que los proxies HTTP y el servidor web existentes sean compatibles con las conexiones de WebSockets entrantes y hagan lo correcto con ellos (es decir, reenviarlos al controlador real). Pero después de un apretón de manos exitoso (que incluye intercambio y validación de información de origen), la conexión permanece abierta y se vuelve bidireccional.

Cada paquete de datos (ya sea enviado desde el servidor o desde el cliente) comienza con '\ x00' (byte cero), es seguido por datos codificados UTF-8 y termina con '\ xff' (todos bytes)

El actual proyecto de norma está aquí: http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76

También puede encontrar el wsproxy incluido en noVNC ser útil como referencia. wsproxy es un proxy de socket WebSockets genérico a TCP. Hay una versión en C y python de wsproxy incluida con noVNC.

http://github.com/kanaka/noVNC/tree/master/utils/

22

En cierto modo, es tanto una petición HTTP y un socket TCP regular.

Se solicita una conexión websocket mediante una solicitud HTTP normal a través de TCP. Se han enviado algunos encabezados que indican al servidor web que se está solicitando un websocket y no una página normal, pero fundamentalmente es solo una solicitud HTTP.

Después de que se envíe la respuesta desde el servidor, la conexión se actualiza. Es decir, la conexión TCP que se estaba utilizando para HTTP se secuestra para una llamada más alta: transferencia de datos bidireccional y en tiempo real.

Una vez que tenga la capacidad de comunicarse bidireccionalmente y de manera eficiente (que es la principal victoria sobre el cometa), los horizontes de los desarrolladores se ve incrementado en gran medida. De repente, cosas como los juegos MMO y la colaboración en tiempo real, que no eran posibles usando solo tecnologías web, se hicieron posibles.

+0

Pregunta: ¿EXACTAMENTE es como abrir la solicitud http y mantenerla abierta? (como el largo sondeo del cometa ...)? o es algo diferente –

+0

@RoyiNamir, sí, exactamente lo mismo, dar o tomar algunos encabezados, excepto que no tiene que abrir una nueva conexión cada vez que desea enviar o recibir algo. –

+0

Gracias. por lo que realmente hace un verdadero empujón .... ¿verdad? (y no responde a una solicitud ...) –

0

En tal situación, el papel de servidor viene cuando: (. Comm 2 vías)

En HTML 5, WebSocket como un fone no walky-talkies. protocolo HTTP actualizado al protocolo websocket. (wss:// from ws://) El SERVIDOR debe ser capaz de abrir el canal dúplex y, por lo tanto, ACEPTA la comunicación dúplex. También visite este enlace: http://www.html5rocks.com/en/tutorials/websockets/basics/

Gracias.

Cuestiones relacionadas