2011-01-04 16 views
9

Dobrze, więc właśnie wypróbowałem nową klasę WebSocket w HTML 5 i byłem bardzo podekscytowany, że istnieją; jednak nie widzę, jak są one o wiele bardziej satysfakcjonujące niż AJAX, widząc, jak nadal inicjują połączenie HTTP i nie są tak konwencjonalne jak gniazda. Dlatego proszę tutaj.JS/HTML5 WebSocket: Połącz bez połączenia HTTP

Czy istnieje sposób na łączenie się z gniazdem nasłuchującym klasy HTML 5-5 bez wysyłania danych HTTP? Aktualnie z budowniczym TCP/IP pokazuje to wszystko, czego nie chcę (ponieważ chcę połączyć się z serwerami POP3/IMAP bez takich obiektów jak Flash Bridge czy Comet).

Możliwe?

Wyjście z połączenia:

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

Po prostu aktualizacja; Wygląda na to, że W3C jest interfejsem * czystego * TCP/UDP, chociaż jestem pewny, że minie kilka lat, zanim zobaczymy jakąkolwiek funkcjonalność. – Qix

Odpowiedz

5

No. Po nawiązaniu połączenia masz prawdziwe gniazdo. Ale masz rację, że wymaga specjalnej obsługi serwera. Dzięki temu nie połączysz się z niezmodyfikowanym serwerem POP lub IMAP.

Wybrali ten projekt (mechanizm aktualizacji), aby można było łatwo mieć serwer, który nasłuchiwał połączeń WebSocket, a także prawdziwe żądania HTTP.

Tam jest nadal duże rozróżnienie z AJAX i COMET. Możesz używać WebSockets do prawdziwej komunikacji full-duplex między serwerem a klientem. Poprzednie interfejsy API przeglądarki nie przewidywały tego, zmuszając ludzi do korzystania z różnych aplikacji (takich jak powtarzające się żądania AJAX, ramka COMET na zawsze i inne).

+0

Czyli AJAX nie zamyka się? Trochę jak na zawsze rama połączona z AJAX. Sprytny, ale nie taki zręczny w tym samym czasie. Dziękuję za informację! – Qix

+0

to nie całkiem czyste gniazdo TCP po uzgadnianiu, ponieważ istnieje dodatkowe kadrowanie dla każdej ramki. @ Di-0xide, to naprawdę bardziej przypomina gniazdo z uściskiem dłoni podobnym do HTTP (i minimalnym ramkowaniem). Uścisk dłoni ułatwia dodanie obsługi WebSockets do serwerów WWW i serwerów proxy, ale to wszystko. To nie jest żądanie HTTP, to uzgadnianie WebSockets, które wygląda jak HTTP. – kanaka

+0

@kanaka, nie chciałem sugerować, że to było gniazdo TCP. Istnieje wiele innych rodzajów (UDP, raw, domena itp.). WebSocket to kolejna. –

Powiązane problemy