Conectando-se ao soquete TCP do navegador usando o javascript

Eu tenho um aplicativo vb.net que abre um soquete e escuta sobre ele.

Eu preciso comunicar através deste soquete para esse aplicativo usando um javascript em execução em um navegador. Isso é preciso enviar alguns dados neste soquete para que o aplicativo que está escutando neste soquete possa pegar esses dados, fazer algumas coisas usando algumas chamadas remotas e obter mais alguns dados e colocá-los de volta no soquete que meu javascript precisa ler e imprimi-lo no navegador.

Eu tentei, socket.io, websockify, mas nenhum provou ser útil.

Daí a questão, é o que estou tentando mesmo possível? Existe uma maneira que um javascript em execução em um navegador pode se conectar a um soquete tcp e enviar alguns dados e escutá-lo por mais alguma resposta de dados no soquete e imprimi-lo no navegador.

Se isso for possível, alguém pode me indicar na direção certa a qual me ajudaria a estabelecer o objective.

    Quanto ao seu problema, atualmente você terá que depender de XHR ou websockets para isso.

    Atualmente nenhum navegador popular implementou qualquer api raw sockets para javascript que permite criar e acessar sockets brutos, mas um rascunho para a implementação da API raw sockets em JavaScript está a caminho. Dê uma olhada nestes links:
    http://www.w3.org/TR/raw-sockets/
    https://developer.mozilla.org/pt-BR/docs/Web/API/TCPSocket

    O Chrome agora tem suporte para sockets TCP e UDP brutos em suas APIs “experimentais”. Esses resources estão disponíveis apenas para extensões e, embora documentados, estão ocultos no momento. Dito isto, alguns desenvolvedores já estão criando projetos interessantes usando-o, como este cliente de IRC .

    Para acessar essa API, você precisará ativar o sinalizador experimental no manifesto da sua extensão. Usar sockets é bastante simples, por exemplo:

    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!"); }); }); 

    Você pode usar 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/

    O seu servidor também deve estar escutando com um servidor WebSocket, como o pywebsocket. Como alternativa, você pode escrever o seu próprio como descrito no Mozilla.

    Adicional:

    Atualização: do rascunho do W3C de janeiro de 2016:

    Isso será possível através da interface do navegador, conforme mostrado abaixo:

    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); ); 

    Veja jsocket . Não usei isso sozinho. Já faz mais de 3 anos desde a última atualização (a partir de 26/6/2014).

    * Usa flash 🙁

    Da documentação :

      

    O projeto ws2s tem como objective levar o soquete para o lado do navegador js. É um servidor websocket que transforma websocket em socket.

    diagrama esquemático de ws2s

    insira a descrição da imagem aqui

    amostra de código:

     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) } 

    A solução que você está realmente procurando é sockets da web. No entanto, o projeto cromo desenvolveu algumas novas tecnologias que são conexões TCP diretas TCP cromo