Ich habe eine vb.net-Anwendung, die einen Socket öffnet und darauf hört.
Ich muss über diesen Socket mit dieser Anwendung über ein Javascript kommunizieren, das in einem Browser ausgeführt wird. Das heißt, ich muss einige Daten über diesen Socket senden, damit die App, die diesen Socket abhört, diese Daten aufnehmen, einige Dinge mit einigen Fernaufrufen erledigen und weitere Daten abrufen und sie wieder auf den Socket setzen kann, den mein Javascript benötigt Lesen und drucken Sie es im Browser.
Ich habe versucht, socket.io, websockify, aber keine hat sich als nützlich erwiesen.
Daher ist die Frage, was ich versuche, überhaupt möglich? Gibt es eine Möglichkeit, dass ein in einem Browser ausgeführtes Javascript eine Verbindung zu einem TCP-Socket herstellen und einige Daten senden und auf eine weitere Datenantwort auf dem Socket warten und diese an den Browser drucken kann?
Wenn dies möglich ist, kann mich jemand in die richtige Richtung weisen, die mir helfen würde, das Ziel festzulegen.
Antworten:
Für Ihr Problem müssen Sie sich derzeit auf XHR oder Websockets verlassen.
Derzeit hat kein beliebter Browser eine solche Raw-Sockets-API für Javascript implementiert, mit der Sie Raw-Sockets erstellen und darauf zugreifen können. Ein Entwurf für die Implementierung der Raw-Sockets-API in JavaScript ist jedoch im Gange. Schauen Sie sich diese Links an:
http://www.w3.org/TR/raw-sockets/
https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket
Chrome unterstützt jetzt unformatierte TCP- und UDP-Sockets in seinen "experimentellen" APIs. Diese Funktionen sind nur für Erweiterungen verfügbar und werden, obwohl dokumentiert, momentan ausgeblendet. Allerdings erstellen einige Entwickler bereits interessante Projekte damit, wie z. B. diesen IRC-Client .
Um auf diese API zugreifen zu können, müssen Sie das experimentelle Flag im Manifest Ihrer Erweiterung aktivieren. Die Verwendung von Sockets ist ziemlich einfach, zum Beispiel:
quelle
Dies ist über die Navigationsoberfläche wie folgt möglich:
Weitere Details finden Sie in der Dokumentation zu w3.org tcp-udp-sockets.
http://raw-sockets.sysapps.org/#interface-tcpsocket
https://www.w3.org/TR/tcp-udp-sockets/
Eine andere Alternative ist die Verwendung von Chrome Sockets
Verbindungen herstellen
Daten senden
Daten empfangen
Sie können auch versuchen, zu verwenden
HTML5 Web Sockets
(obwohl dies keine direkte TCP-Kommunikation ist):http://www.html5rocks.com/de/tutorials/websockets/basics/
Ihr Server muss auch mit einem WebSocket-Server wie pywebsocket lauschen. Alternativ können Sie Ihren eigenen Server schreiben, wie bei Mozilla beschrieben
quelle
Das ws2s- Projekt zielt darauf ab, Socket auf browser-seitige js zu bringen. Es ist ein Websocket-Server, der Websocket in Socket umwandelt.
ws2s schematisches Diagramm
Codebeispiel:
quelle
Siehe jsocket . Ich habe es selbst nicht benutzt. Seit mehr als 3 Jahren seit dem letzten Update (Stand 26.6.2014).
* Verwendet Flash :(
Aus der Dokumentation :
quelle
Die Lösung, nach der Sie wirklich suchen, sind Web-Sockets. Das Chromprojekt hat jedoch einige neue Technologien entwickelt, die direkte TCP-Verbindungen TCP-Chrom sind
quelle
Um das zu erreichen, was Sie wollen, müssten Sie zwei Anwendungen schreiben (z. B. in Java oder Python):
Bridge-App, die sich auf dem Client-Computer befindet und sowohl TCP / IP-Sockets als auch WebSockets verarbeiten kann. Es wird mit dem betreffenden TCP / IP-Socket interagieren.
Serverseitige App (z. B. JSP / Servlet WAR), die WebSockets kommunizieren kann. Es enthält mindestens eine HTML-Seite (gegebenenfalls einschließlich serverseitigen Verarbeitungscodes), auf die ein Browser zugreifen kann.
Es sollte so funktionieren
Hinweis 1: Die obigen Schritte sind eine große Vereinfachung und enthalten keine Informationen zur Fehlerbehandlung und zu KeepAlive-Anforderungen, falls der Client die Verbindung vorzeitig trennt oder der Server die Clients darüber informieren muss, dass er heruntergefahren / neu gestartet wird.
Hinweis 2: Abhängig von Ihren Anforderungen können diese Komponenten möglicherweise zu einer zusammengeführt werden, wenn sich der betreffende TCP / IP-Socket-Server (mit dem die Bridge kommuniziert) auf demselben Computer wie die Server-App befindet.
quelle