J'ai une application vb.net qui ouvre un socket et écoute dessus.
J'ai besoin de communiquer via cette socket avec cette application en utilisant un javascript exécuté sur un navigateur. C’est-à-dire que j’ai besoin d’envoyer des données sur ce socket pour que l’application qui écoute sur ce socket puisse prendre ces données, utiliser des appels distants et obtenir des données supplémentaires et les replacer sur le socket que mon javascript doit utiliser. lisez-le et imprimez-le dans le navigateur.
J'ai essayé, socket.io, websockify, mais aucun ne s'est avéré utile.
D'où la question, est ce que j'essaye même possible? Existe-t-il un moyen pour un javascript exécuté dans un navigateur de se connecter à un socket TCP, d’envoyer des données et d’écouter une réponse supplémentaire sur le socket, puis de l’imprimer sur le navigateur.
Si cela est possible, quelqu'un peut-il m'indiquer la meilleure solution pour m'aider à établir l'objectif?.
Pour ce qui est de votre problème, vous devrez actuellement vous fier à XHR ou à des websockets pour cela.
À l'heure actuelle, aucun navigateur populaire n'a implémenté une telle api de sockets brute pour javascript qui vous permet de créer et d'accéder à des sockets bruts, mais un brouillon pour la mise en œuvre de cette api en JavaScript est en cours. Jetez un coup d'œil à ces liens:
http://www.w3.org/TR/raw-sockets/
https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket
Chrome prend désormais en charge les sockets raw TCP et UDP dans ses API "expérimentales". Ces fonctionnalités ne sont disponibles que pour les extensions et, bien que documentées, sont masquées pour le moment. Cela dit, certains développeurs créent déjà des projets intéressants utilisant ce logiciel, tels que this IRC client .
Pour accéder à cette API, vous devez activer l'indicateur expérimental dans le manifeste de votre extension. Utiliser des sockets est assez simple, par exemple:
chrome.experimental.socket.create('tcp', '127.0.0.1', 8080, function(socketInfo) {
chrome.experimental.socket.connect(socketInfo.socketId, function (result) {
chrome.experimental.socket.write(socketInfo.socketId, "Hello, world!");
});
});
Vous pouvez utiliser HTML5 Web Sockets
:
var connection = new WebSocket('ws://IPAddress:Port');
connection.onopen = function () {
connection.send('Ping'); // Send the message 'Ping' to the server
};
http://www.html5rocks.com/en/tutorials/websockets/basics/
Votre serveur doit également écouter avec un serveur WebSocket tel que pywebsocket. Vous pouvez également écrire le vôtre, comme indiqué à l’adresse Mozilla
Supplémentaire:
Mise à jour: Version préliminaire du W3C de janvier 2016:
Cela sera possible via l'interface du navigateur comme indiqué ci-dessous:
http://raw-sockets.sysapps.org/#interface-tcpsocket
https://www.w3.org/TR/tcp-udp-sockets/
navigator.tcpPermission.requestPermission({remoteAddress:"127.0.0.1", remotePort:6789}).then(
() => {
// Permission was granted
// Create a new TCP client socket and connect to remote Host
var mySocket = new TCPSocket("127.0.0.1", 6789);
// Send data to server
mySocket.writeable.write("Hello World").then(
() => {
// Data sent sucessfully, wait for response
console.log("Data has been sent to server");
mySocket.readable.getReader().read().then(
({ value, done }) => {
if (!done) {
// Response received, log it:
console.log("Data received from server:" + value);
}
// Close the TCP connection
mySocket.close();
}
);
},
e => console.error("Sending error: ", e)
);
}
);
ws2s le projet vise à amener un socket vers le navigateur js. C'est un serveur websocket qui transforme websocket en socket.
schéma schématique ws2s
exemple de code:
var socket = new WS2S("wss://ws2s.feling.io/").newSocket()
socket.onReady = () => {
socket.connect("feling.io", 80)
socket.send("GET / HTTP/1.1\r\nHost: feling.io\r\nConnection: close\r\n\r\n")
}
socket.onRecv = (data) => {
console.log('onRecv', data)
}
Voir jsocket . Je ne l'ai pas utilisé moi-même. Été plus de 3 ans depuis la dernière mise à jour (au 26/6/2014).
* Utilise flash :(
De la documentation :
<script type='text/javascript'>
// Host we are connecting to
var Host = 'localhost';
// Port we are connecting on
var port = 3000;
var socket = new jSocket();
// When the socket is added the to document
socket.onReady = function(){
socket.connect(Host, port);
}
// Connection attempt finished
socket.onConnect = function(success, msg){
if(success){
// Send something to the socket
socket.write('Hello world');
}else{
alert('Connection to the server could not be estabilished: ' + msg);
}
}
socket.onData = function(data){
alert('Received from socket: '+data);
}
// Setup our socket in the div with the id="socket"
socket.setup('mySocket');
</script>
Pour obtenir ce que vous voulez, vous devez écrire deux applications (par exemple, Java ou Python):
Application Bridge installée sur la machine du client et pouvant gérer à la fois les sockets TCP/IP et WebSockets. Il va interagir avec le socket TCP/IP en question.
Application côté serveur (telle qu'un fichier WAR JSP/Servlet) pouvant parler à WebSockets. Il comprend au moins une page HTML (y compris le code de traitement côté serveur si nécessaire) accessible à un navigateur.
Ça devrait marcher comme ça
Note 1: Les étapes ci-dessus constituent une vaste simplification et n'incluent pas d'informations sur le traitement des erreurs et les demandes keepAlive, dans le cas où le client se déconnecte prématurément ou que le serveur doit informer les clients qu'il est en train de fermer/redémarrer.
Note 2: En fonction de vos besoins, il peut être possible de fusionner ces composants en un seul si le serveur de socket TCP/IP en question (auquel le pont parle) est sur le même ordinateur que l'application serveur. .
La solution que vous recherchez réellement est des sockets Web. Cependant, le projet chrome a mis au point de nouvelles technologies qui sont des connexions directes TCP chrome TCP