Jak korzystać z gniazd w JavaScript \ HTML? [Zamknięte]

82

Jak korzystać z gniazd w JavaScript \ HTML?

Może korzystasz z fajnego HTML5?

Biblioteki? Poradniki? Artykuły na blogu?

Rella
źródło
1
Co próbujesz zrobić? Którą przeglądarkę chcesz obsługiwać?
James Black
Zakładam, że
odnosisz się
Masz na myśli gniazda TCP?
AlikElzin-kilaka

Odpowiedzi:

57

Specyfikacje:

Artykuły:

Instruktaż:

Biblioteki:

okw
źródło
1
Aktualizacja: bobincezapewniła prosty poradnik na tej stronie: P
okw
3
Tak, tym użytkownikiem byłby prawdopodobnie Jonas Jacobi należący do Kaazinga. Często pojawia się wszędzie tam, gdzie wspomniano o WebSocket! Nie do końca rozumiem, że Kaazing TBH siedzi na websocket.org, aby promować coś, co wydaje się być monolitycznym, nie-w rzeczywistości wolnym rozwiązaniem typu klient-serwer, które ma obsługę WebSocket jako pozornie niewielką część tego, co faktycznie robi. Nie wiem, to może być dobre rozwiązanie, ale tak naprawdę nie jestem do końca zadowolony z marketingu. [zredagowane, stąd po odpowiedzi okw]
bobince
78

Jak korzystać z gniazd w JavaScript / HTML?

Nie ma możliwości używania gniazd ogólnego przeznaczenia w JS lub HTML. Po pierwsze, byłaby to katastrofa bezpieczeństwa.

W HTML5 jest WebSocket. Strona klienta jest dość trywialna:

socket= new WebSocket('ws://www.example.com:8000/somesocket');
socket.onopen= function() {
    socket.send('hello');
};
socket.onmessage= function(s) {
    alert('got reply '+s);
};

Będziesz potrzebował wyspecjalizowanej aplikacji używającej gniazd po stronie serwera, aby przejmować połączenia i coś z nimi robić; nie jest to coś, co normalnie robisz z poziomu interfejsu skryptowego serwera WWW. Jednak jest to stosunkowo prosty protokół ; mój punkt końcowy oparty na Pythonie SocketServer miał tylko kilka stron kodu.

W każdym razie tak naprawdę jeszcze nie istnieje. Ani specyfikacja po stronie JavaScript, ani specyfikacja transportu sieciowego nie są ustalone i żadna przeglądarka jej nie obsługuje.

Możesz jednak użyć Flasha, jeśli to możliwe, aby zapewnić skryptowi rezerwę, dopóki WebSocket nie będzie powszechnie dostępny. Jednym z bezpłatnych przykładów takiego rozwiązania jest web-socket-js firmy Gimite . Jednak podlegasz wtedy takim samym ograniczeniom jak Flash Sockets, a mianowicie, że Twój serwer musi być w stanie wypluć politykę międzydomenową na żądanie do portu gniazda i często będziesz mieć problemy z serwerami proxy / zaporami ogniowymi. (Gniazda Flash są tworzone bezpośrednio; dla kogoś bez bezpośredniego dostępu do publicznego adresu IP, który może wyjść z sieci tylko przez serwer proxy HTTP, nie będą działać).

O ile naprawdę nie potrzebujesz dwukierunkowej komunikacji o niskim opóźnieniu, na razie lepiej się trzymaj XMLHttpRequest.

bobince
źródło
Jakie rodzaje powiązań WS będą obsługiwane przez HTML5?
Rella
Jeśli masz na myśli, jak będą wyglądać obiekty WebSocket w przeglądarce, to wciąż się okaże, ale specyfikacja ( w3.org/TR/websockets ) nie zmieniła się ostatnio zbytnio . Jeśli przez WS Bindings mówisz o usługach internetowych, to żadne: WebSocket nie będzie rozmawiać o SOAP ani żadnym innym istniejącym protokole.
bobince
1
Mówisz: „Nie ma możliwości korzystania z gniazd ogólnego przeznaczenia w JS lub HTML. To byłaby katastrofa dla bezpieczeństwa”. ale co z aplikacjami związanymi z phonegap lub phonegap? HTML + js jest potrzebny nie tylko w standardowych przeglądarkach.
obayhan
46

Myślę, że ważne jest, aby wspomnieć, teraz, gdy to pytanie ma ponad rok, że Socket.IO od tego czasu się pojawił i wydaje się być teraz podstawowym sposobem pracy z gniazdami w przeglądarce; o ile wiem, jest również kompatybilny z Node.js.

Ricket
źródło
13
DOBRZE. To już prawie 6 lat. Czy standardy się zmieniły?
Aaron Esau