2011-01-04 6 views
9

Ordnung so dass ich nur die neue WebSocket-Klasse in HTML 5, ausprobiert und war ziemlich aufgeregt, sie existieren; Allerdings kann ich nicht sehen, wie viel lohnender sie sind als AJAX, da sie immer noch einen HTTP-Aufruf auslösen und wie herkömmliche Sockets nicht sind. Deshalb frage ich hier.JS/HTML5 WebSocket: Verbinden ohne HTTP-Aufruf

Gibt es eine Möglichkeit mit WebSocket Klasse HTML 5 zu einer Abhörsocket zu verbinden, ohne HTTP-Daten senden? Derzeit mit TCP/IP-Builder zeigt es all diese Header-Mist, die ich nicht will (da ich mit POP3/IMAP-Servern ohne Dinge wie Flash-Brücken oder Comet verbinden möchten).

Möglich?

Ausgabe von Verbindung:

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

Nur ein Update; W3C scheint eine * reine * TCP/UDP-Socket-API zu spezifizieren, obwohl ich sicher bin, dass es einige Jahre dauern wird, bis wir irgendeine Art von Funktionalität dafür sehen. – Qix

Antwort

5

Nr Sobald die Verbindung hergestellt ist Ihnen eine echte Buchse haben. Aber Sie haben Recht, dass es spezielle Serverunterstützung erfordert. So können Sie keine Verbindung zu einem nicht geänderten POP- oder IMAP-Server herstellen.

wählte sie, dass Design (der Aktualisierungs-Mechanismus), so dass Sie könnte leicht einen Server haben, der für WebSocket-Verbindungen sowie echte HTTP-Anforderungen zugehört.

Dort ist immer noch eine große Unterscheidung von AJAX und COMET. Sie können WebSockets verwenden, um eine echte Vollduplex-Kommunikation zwischen Server und Client herzustellen. Bisherige Browser-APIs haben dies nicht vorgesehen und zwingen die Benutzer dazu, verschiedene Work-arounds zu verwenden (wie wiederholte AJAX-Anfragen, COMET-Frames für immer und andere).

+0

Es ist also ziemlich AJAX, die nicht schließt? Ein bisschen wie ein Forever-Frame in Kombination mit AJAX. Schick, aber nicht so raffiniert zugleich. Danke für die Information! – Qix

+0

es ist nicht wirklich eine reine TCP-Socket nach dem Handshake, weil es zusätzliche Rahmen für jeden Rahmen gibt. @ Di-Oxide, es ist wirklich mehr wie ein Socket mit einem HTTP-ähnlichen Handshake (und einigen minimalen Rahmen). Der Handshake erleichtert das Hinzufügen von WebSockets-Unterstützung zu Webservern und Proxys, aber das ist alles. Es ist keine HTTP-Anfrage, es ist ein WebSockets-Handshake, der nur wie HTTP aussieht. – kanaka

+0

@kanaka, ich wollte damit nicht implizieren, es war ein TCP-Socket. Es gibt viele andere Arten (UDP, Raw, Domain, etc.). WebSocket ist noch eine andere. –