Wie verwende ich Sockets in JavaScript \ HTML? [geschlossen]

82

Wie verwende ich Sockets in JavaScript \ HTML?

Verwenden Sie möglicherweise cooles HTML5?

Bibliotheken? Tutorials? Blog-Artikel?

Rella
quelle
1
Was versuchst du zu machen? Welchen Browser möchten Sie unterstützen?
James Black
Ich nehme an, Sie beziehen sich auf Web Sockets
okw
Meinen Sie TCP-Sockets?
AlikElzin-Kilaka

Antworten:

57

Spezifikationen:

Artikel:

Lernprogramm:

Bibliotheken:

OK W
quelle
1
Update: bobinceein einfaches Tutorial auf dieser Seite bereitgestellt: P
okw
3
Ja, dieser Benutzer wäre vermutlich Kaazings eigener Jonas Jacobi. Erscheint oft überall dort, wo WebSocket erwähnt wird! Ich verstehe Kaazing TBH nicht ganz, wenn ich auf websocket.org sitze, um für eine scheinbar monolithische, nicht wirklich kostenlose Client-und-Server-Lösung zu werben, die WebSocket-Unterstützung als scheinbar recht kleinen Teil dessen bietet, was sie tatsächlich tut. Ich weiß nicht, es könnte eine gute Lösung sein, aber ich bin mit dem Marketing nicht ganz zufrieden. [bearbeitet, daher nach okws Antwort]
Bobince
78

Wie verwende ich Sockets in JavaScript / HTML?

Es gibt keine Möglichkeit, Allzweck-Sockets in JS oder HTML zu verwenden. Zum einen wäre es eine Sicherheitskatastrophe.

Es gibt WebSocket in HTML5. Die Client-Seite ist ziemlich trivial:

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

Sie benötigen eine spezielle Socket-Anwendung auf der Serverseite, um die Verbindungen herzustellen und etwas mit ihnen zu tun. Dies ist normalerweise nicht über die Skriptoberfläche eines Webservers möglich. Es ist jedoch ein relativ einfaches Protokoll ; Mein noddy Python SocketServer-basierter Endpunkt bestand nur aus ein paar Seiten Code.

Auf jeden Fall existiert es noch nicht wirklich. Weder die JavaScript-seitige Spezifikation noch die Netzwerktransportspezifikation sind festgenagelt, und kein Browser unterstützt sie.

Sie können jedoch Flash verwenden, sofern verfügbar, um Ihrem Skript einen Fallback bereitzustellen, bis WebSocket allgemein verfügbar ist. Gimites Web-Socket-js ist ein kostenloses Beispiel dafür. Sie unterliegen dann jedoch denselben Einschränkungen wie Flash Sockets, nämlich dass Ihr Server in der Lage sein muss, auf Anfrage eine domänenübergreifende Richtlinie an den Socket-Port auszuspucken, und Sie häufig Probleme mit Proxys / Firewalls haben. (Flash-Sockets werden direkt erstellt. Für Personen ohne direkten öffentlichen IP-Zugriff, die nur über einen HTTP-Proxy aus dem Netzwerk aussteigen können, funktionieren sie nicht.)

Wenn Sie keine bidirektionale Kommunikation mit geringer Latenz benötigen, sollten Sie sich vorerst besser daran halten XMLHttpRequest.

Bobince
quelle
Welche Arten von WS-Bindungen werden von HTML5 unterstützt?
Rella
Wenn Sie meinen, wie WebSocket-Objekte im Browser aussehen werden, bleibt abzuwarten, aber die Spezifikation ( w3.org/TR/websockets ) hat sich in letzter Zeit nicht wesentlich geändert. Wenn Sie über WS-Bindungen von Webdiensten sprechen, dann keine: WebSocket spricht nicht über SOAP oder ein anderes bereits vorhandenes Protokoll.
Bobince
1
Sie sagen: "Es gibt keine Möglichkeit, Allzweck-Sockets in JS oder HTML zu verwenden. Zum einen wäre dies eine Sicherheitskatastrophe." Aber was ist mit Phonegap oder Phonegap-bezogenen Anwendungen? HTML + js wird nicht nur für Standardbrowser benötigt.
Obayhan
46

Ich denke, es ist wichtig zu erwähnen, dass Socket.IO jetzt, da diese Frage über 1 Jahr alt ist, inzwischen herausgekommen ist und die primäre Methode zu sein scheint, um jetzt mit Sockets im Browser zu arbeiten. Soweit ich weiß, ist es auch mit Node.js kompatibel .

Ricket
quelle
13
OK. Es ist fast 6 Jahre her. Haben sich die Standards geändert?
Aaron Esau