2011-01-04 12 views
9

Bien, así que probé la nueva clase WebSocket en HTML 5, y estaba muy emocionado de que existieran; sin embargo, no veo cómo son mucho más gratificantes que AJAX ya que todavía inician una llamada HTTP y son no como conectores convencionales. Es por eso que estoy preguntando aquí.JS/HTML5 WebSocket: Conectar sin llamada HTTP

¿Hay alguna forma de que la clase WebSocket de HTML 5 se conecte a un puerto de escucha sin enviar datos HTTP? Actualmente con el creador de TCP/IP está mostrando toda esta mierda de encabezado que no quiero (ya que quiero conectarme a servidores POP3/IMAP sin cosas como puentes Flash o Comet).

¿Posible?

salida de conexión:

Listening for connections...Connected 
GET/HTTP/1.1 
Upgrade: WebSocket 
Connection: Upgrade 
Host: localhost:666 
Origin: null 
Sec-WebSocket-Key1: 2 987_390VNw60yi9 
Sec-WebSocket-Key2: ~196 Y p 5 P67 428 ? 
+0

Solo una actualización; Parece que W3C está especificando una API de socket * puro * TCP/UDP, aunque estoy seguro de que pasarán varios años antes de que veamos algún tipo de funcionalidad para ello. – Qix

Respuesta

5

No. Una vez establecida la conexión se tiene una verdadera toma de corriente. Pero tienes razón en que requiere soporte especial para el servidor. Por lo tanto, no le permitirá conectarse a un servidor POP o IMAP sin modificar.

Eligen ese diseño (el mecanismo de actualización) para que pueda tener fácilmente un servidor que haya escuchado las conexiones de WebSocket así como las verdaderas solicitudes HTTP.

Hay es todavía una gran distinción de AJAX y COMET. Puede usar WebSockets para tener una verdadera comunicación de dúplex completo entre el servidor y el cliente. Las API de navegador anteriores no han proporcionado eso, lo que obliga a las personas a utilizar varias soluciones alternativas (como las solicitudes repetidas de AJAX, el marco de siempre de COMET y otras).

+0

Entonces, ¿casi no se cierra AJAX? Algo así como un marco para siempre combinado con AJAX. Nifty, pero no tan ingenioso al mismo tiempo. ¡Gracias por la información! – Qix

+0

no es un socket TCP puro después del handshake porque hay marcos adicionales para cada frame. @ Di-0xide, en realidad se parece más a un zócalo con un apretón de manos tipo HTTP (y un mínimo de encuadre). El apretón de manos hace que sea más fácil agregar soporte WebSockets a servidores web y proxies, pero eso es todo. No es una solicitud HTTP, es un saludo de WebSockets que simplemente se parece a HTTP. – kanaka

+0

@kanaka, no quise dar a entender que era un socket TCP. Hay muchos otros tipos (UDP, raw, dominio, etc.). WebSocket es otro más. –