Connessione al socket TCP dal browser usando javascript

Ho un’applicazione vb.net che apre un socket e ci ascolta.

Devo comunicare tramite questo socket a quell’applicazione utilizzando un javascript in esecuzione su un browser. Ho bisogno di inviare alcuni dati su questo socket in modo che l’app che sta ascoltando su questo socket possa prendere quei dati, fare alcune cose usando alcune chiamate remote e ottenere più dati e rimetterli sul socket che il mio javascript deve leggere e stampare nel browser.

Ho provato, socket.io, websockify ma nessuno si è rivelato utile.

Da qui la domanda, è quello che sto cercando anche ansible? C’è un modo in cui un javascript in esecuzione in un browser può connettersi a un socket TCP e inviare alcuni dati e ascoltarlo per un po ‘più di risposta dei dati sul socket e stamparlo sul browser.

Se ciò è ansible, qualcuno può indicarmi la direzione giusta per decidere quale sarebbe l’objective.

Per quanto riguarda il tuo problema, al momento dovrai fare affidamento su XHR o websocket per questo.

Attualmente nessun browser popolare ha implementato alcun tipo di API raw socket per javascript che consente di creare e accedere a socket non elaborati, ma una bozza per l’implementazione di API raw socket in JavaScript è in corso. Dai un’occhiata a questi link:
http://www.w3.org/TR/raw-sockets/
https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket

Chrome ora supporta i socket TCP e UDP non elaborati nelle sue API “sperimentali”. Queste funzionalità sono disponibili solo per le estensioni e, sebbene documentate, sono nascoste per il momento. Detto questo, alcuni sviluppatori stanno già creando progetti interessanti che lo utilizzano, come questo client IRC .

Per accedere a questa API, devi abilitare il flag sperimentale nel manifest della tua estensione. L’uso dei socket è piuttosto semplice, ad esempio:

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

È ansible utilizzare 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/

Il tuo server deve anche essere in ascolto con un server WebSocket come pywebsocket, in alternativa puoi scrivere il tuo come descritto in Mozilla

Ulteriori:

Aggiornamento: dal progetto W3C gennaio 2016:

Questo sarà ansible tramite l’interfaccia del navigatore come mostrato di seguito:

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

Vedi jsocket . Non l’ho usato da solo. Sono passati più di 3 anni dall’ultimo aggiornamento (dal 26/6/2014).

* Utilizza flash 🙁

Dalla documentazione :

  

Il progetto ws2s ha lo scopo di portare il socket sul lato js del browser. È un server websocket che trasforma websocket in socket.

diagramma schematico di ws2s

inserisci la descrizione dell'immagine qui

esempio di codice:

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

La soluzione che stai davvero cercando sono le prese per il web. Tuttavia, il progetto chromium ha sviluppato alcune nuove tecnologie che sono connessioni TCP dirette TCP cromo