J'ai une application vb.net qui ouvre une socket et écoute dessus.
J'ai besoin de communiquer via cette socket à cette application en utilisant un javascript fonctionnant sur un navigateur. C'est-à-dire que je dois envoyer des données sur cette prise afin que l'application qui écoute sur cette prise puisse prendre ces données, faire des choses en utilisant des appels à distance et obtenir plus de données et les remettre sur la prise dont mon javascript a besoin 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 ce que j'essaye est encore possible? Existe-t-il un moyen pour un javascript exécuté dans un navigateur de se connecter à une socket tcp et d'envoyer des données et d'écouter dessus pour une réponse de données supplémentaire sur le socket et de l'imprimer dans le navigateur.
Si cela est possible, quelqu'un peut-il m'indiquer dans la bonne direction ce qui m'aiderait à établir l'objectif.
Réponses:
En ce qui concerne votre problème, vous devrez actuellement dépendre de XHR ou de Websockets pour cela.
Actuellement, aucun navigateur populaire n'a implémenté une telle api de sockets brutes pour javascript qui vous permet de créer et d'accéder à des sockets brutes, mais un projet pour la mise en œuvre de l'api de sockets brutes en JavaScript est en cours. Jetez un œ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 TCP et UDP bruts 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 en l'utilisant, comme ce client IRC .
Pour accéder à cette API, vous devez activer l'indicateur expérimental dans le manifeste de votre extension. L'utilisation de sockets est assez simple, par exemple:
la source
Cela sera possible via l'interface du navigateur comme indiqué ci-dessous:
Plus de détails sont décrits dans la documentation de w3.org tcp-udp-sockets.
http://raw-sockets.sysapps.org/#interface-tcpsocket
https://www.w3.org/TR/tcp-udp-sockets/
Une autre alternative consiste à utiliser des sockets Chrome
Créer des connexions
Envoi de données
Réception de données
Vous pouvez également utiliser essayer d'utiliser
HTML5 Web Sockets
(bien qu'il ne s'agisse pas d'une communication TCP directe):http://www.html5rocks.com/en/tutorials/websockets/basics/
Votre serveur doit également être à l'écoute avec un serveur WebSocket tel que pywebsocket, sinon vous pouvez écrire le vôtre comme indiqué dans Mozilla
la source
Le projet ws2s vise à amener socket vers js côté navigateur. C'est un serveur websocket qui transforme websocket en socket.
diagramme schématique ws2s
exemple de code:
la source
Voir jsocket . Je ne l'ai pas utilisé moi-même. Plus de 3 ans depuis la dernière mise à jour (au 26/6/2014).
* Utilise le flash :(
De la documentation :
la source
La solution que vous recherchez vraiment, ce sont les sockets Web. Cependant, le projet chrome a développé de nouvelles technologies qui sont des connexions TCP directes TCP chrome
la source
Pour réaliser ce que vous voulez, vous devez écrire deux applications (en Java ou en Python, par exemple):
Application de pont qui se trouve sur la machine du client et peut gérer à la fois les sockets TCP / IP et les WebSockets. Il interagira avec le socket TCP / IP en question.
Application côté serveur (telle qu'un WAR JSP / Servlet) qui peut parler WebSockets. Il comprend au moins une page HTML (y compris le code de traitement côté serveur si nécessaire) à laquelle un navigateur peut accéder.
Ça devrait fonctionner comme ça
Remarque 1: Les étapes ci-dessus sont une simplification considérable et n'incluent pas d'informations sur la gestion des erreurs et les demandes keepAlive, dans le cas où le client se déconnecte prématurément ou le serveur doit informer les clients qu'il est en train de s'arrêter / redémarrer.
Remarque 2: selon vos besoins, il peut être possible de fusionner ces composants en un seul si le serveur socket TCP / IP en question (auquel le pont parle) se trouve sur la même machine que l'application serveur.
la source