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?


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

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.


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.


13
DOBRZE. To już prawie 6 lat. Czy standardy się zmieniły?
Aaron Esau
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.