Tengo una aplicación vb.net que abre un socket y lo escucha.
Necesito comunicarme a través de este socket con esa aplicación usando un javascript que se ejecuta en un navegador. Es decir, necesito enviar algunos datos en este socket para que la aplicación que está escuchando en este socket pueda tomar esos datos, hacer algunas cosas usando algunas llamadas remotas y obtener más datos y volver a colocarlos en el socket que mi javascript necesita. léelo e imprímelo en el navegador.
He probado, socket.io, websockify pero ninguno ha demostrado ser útil.
De ahí la pregunta, ¿es posible lo que estoy intentando? ¿Hay alguna manera de que un javascript que se ejecuta en un navegador pueda conectarse a un socket tcp y enviar algunos datos y escucharlos para obtener más respuesta de datos en el socket e imprimirlos en el navegador?
Si esto es posible, alguien me puede indicar la dirección correcta que me ayudaría a establecer la meta.
Respuestas:
En cuanto a su problema, actualmente tendrá que depender de XHR o websockets para esto.
Actualmente, ningún navegador popular ha implementado ninguna api de sockets sin formato para javascript que le permita crear y acceder a sockets sin formato, pero se está preparando un borrador para la implementación de la api de sockets sin formato en JavaScript. Eche un vistazo a estos enlaces:
http://www.w3.org/TR/raw-sockets/
https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket
Chrome ahora tiene soporte para sockets TCP y UDP sin procesar en sus API "experimentales". Estas funciones solo están disponibles para extensiones y, aunque están documentadas, están ocultas por el momento. Dicho esto, algunos desarrolladores ya están creando proyectos interesantes usándolo, como este cliente de IRC .
Para acceder a esta API, deberá habilitar la marca experimental en el manifiesto de su extensión. Usar sockets es bastante sencillo, por ejemplo:
fuente
Esto será posible a través de la interfaz del navegador como se muestra a continuación:
Se describen más detalles en la documentación tcp-udp-sockets de w3.org.
http://raw-sockets.sysapps.org/#interface-tcpsocket
https://www.w3.org/TR/tcp-udp-sockets/
Otra alternativa es usar Chrome Sockets
Creando conexiones
Enviando datos
Recibiendo información
También puede usar intentar usar
HTML5 Web Sockets
(aunque esta no es una comunicación TCP directa):http://www.html5rocks.com/en/tutorials/websockets/basics/
Su servidor también debe estar escuchando con un servidor WebSocket como pywebsocket, alternativamente puede escribir el suyo como se describe en Mozilla
fuente
ws2s proyecto tiene como objetivo llevar socket a js del lado del navegador. Es un servidor websocket que transforma websocket en socket.
diagrama esquemático de ws2s
muestra de código:
fuente
Ver jsocket . Yo no lo he usado. Han pasado más de 3 años desde la última actualización (al 26/6/2014).
* Utiliza flash :(
De la documentación :
fuente
La solución que realmente está buscando son los sockets web. Sin embargo, el proyecto de cromo ha desarrollado algunas nuevas tecnologías que son conexiones TCP directas TCP cromo
fuente
Para lograr lo que desea, tendría que escribir dos aplicaciones (en Java o Python, por ejemplo):
Aplicación puente que se encuentra en la máquina del cliente y puede trabajar con sockets TCP / IP y WebSockets. Interactuará con el socket TCP / IP en cuestión.
Aplicación del lado del servidor (como JSP / Servlet WAR) que puede hablar con WebSockets. Incluye al menos una página HTML (incluido el código de procesamiento del lado del servidor si es necesario) a la que puede acceder un navegador.
Debería funcionar así
Nota 1: Los pasos anteriores son una gran simplificación y no incluyen información sobre el manejo de errores y las solicitudes keepAlive, en caso de que el cliente se desconecte prematuramente o el servidor necesite informar a los clientes que se está apagando / reiniciando.
Nota 2: Dependiendo de sus necesidades, podría ser posible fusionar estos componentes en uno si el servidor de socket TCP / IP en cuestión (con el que habla el puente) está en la misma máquina que la aplicación del servidor.
fuente