2011-01-04 3 views
9

OK, ho appena provato la nuova classe WebSocket in HTML 5 ed ero piuttosto eccitato che esistessero; tuttavia, non riesco a vedere come sono molto più gratificanti di AJAX vedere come iniziano ancora una chiamata HTTP e sono non come socket convenzionali. Ecco perché sto chiedendo qui.JS/HTML5 WebSocket: connessione senza chiamata HTTP

C'è un modo con la classe WebSocket di HTML 5 per connettersi a un socket di ascolto senza inviare dati HTTP? Attualmente con il builder TCP/IP sta mostrando tutta questa crap di intestazione che non voglio (dato che voglio connettermi ai server POP3/IMAP senza cose come Flash Bridge o Comet).

Possibile?

uscita dalla connessione:

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 un aggiornamento; Sembra che W3C stia specificando un'API socket * pure * TCP/UDP, anche se sono sicuro che ci vorranno diversi anni prima di vedere qualsiasi tipo di funzionalità per esso. – Qix

risposta

5

No. Una volta che la connessione è stabilita si dispone di una vera presa. Ma hai ragione che richiede un supporto server speciale. Quindi non ti permetterà di connetterti a un server POP o IMAP non modificato.

Hanno scelto tale design (il meccanismo di aggiornamento) in modo da poter facilmente avere un server che ha ascoltato le connessioni WebSocket e le richieste HTTP reali.

è ancora una grande distinzione da AJAX e COMET. È possibile utilizzare WebSockets per avere una vera comunicazione full-duplex tra server e client. Le precedenti API del browser non hanno fornito questo, costringendo le persone a utilizzare vari work-around (come le richieste AJAX ripetute, il frame per sempre di COMET e altri).

+0

Quindi è praticamente AJAX che non chiude? Un po 'come una cornice per sempre combinata con AJAX. Nifty, ma non così elegante allo stesso tempo. Grazie per l'informazione! – Qix

+0

non è un puro socket TCP dopo l'handshake perché c'è un frame aggiuntivo per ogni frame. @ Di-0xide, è molto più simile a un socket con un handshake simile a HTTP (e qualche frame minimo). L'handshake semplifica l'aggiunta del supporto WebSockets a server Web e proxy, ma questo è tutto. Non è una richiesta HTTP, è una stretta di mano WebSockets che sembra proprio HTTP. – kanaka

+0

@kanaka, non volevo implicare che fosse un socket TCP. Ci sono molti altri tipi (UDP, raw, dominio, ecc.). WebSocket è ancora un altro. –