Cree WebSockets entre un servidor TCP y un servidor HTTP en node.js

He creado un servidor TCP usando Node.js que escucha las conexiones de los clientes. Necesito transmitir datos del servidor TCP al servidor HTTP nuevamente en Node.js posiblemente a través de un Websocket ( socket.io ).

Sin embargo, no sé cómo crear dicha conexión, de manera que el servidor TCP pueda enviar datos al servidor HTTP a través de Websocket.

Muchas gracias.

Estaba intentando muchas cosas para conseguir este trabajo. La mayoría de las veces confiaba en socket.io para que esto funcionara, pero simplemente no funcionaba con TCP.

Sin embargo, net.Socket basta el propósito.

Aquí está el ejemplo de trabajo de ello.

Servidor TCP

 var net = require('net'); var HOST = 'localhost'; var PORT = 4040; var server = net.createServer(); server.listen(PORT, HOST); server.on('connection', function(sock) { console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort); sock.write("TCP sending message : 1"); console.log('Server listening on ' + server.address().address +':'+ server.address().port); }).listen(PORT, HOST); 

Servidor HTTP

 var http = require('http').createServer(httpHandler), fs = require("fs"), wsock = require('socket.io').listen(http), tcpsock = require('net'); var http_port = 8888; var tcp_HOST = 'localhost'; var tcp_PORT = 4040; /** * http server */ function httpHandler (req, res) { fs.readFile(__dirname + '/index.html', function (err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); res.end(data); }); } http.listen(http_port); console.info("HTTP server listening on " + http_port); wsock.sockets.on('connection', function (socket) { var tcpClient = new tcpsock.Socket(); tcpClient.setEncoding("ascii"); tcpClient.setKeepAlive(true); tcpClient.connect(tcp_PORT, tcp_HOST, function() { console.info('CONNECTED TO : ' + tcp_HOST + ':' + tcp_PORT); tcpClient.on('data', function(data) { console.log('DATA: ' + data); socket.emit("httpServer", data); }); tcpClient.on('end', function(data) { console.log('END DATA : ' + data); }); }); socket.on('tcp-manager', function(message) { console.log('"tcp" : ' + message); return; }); socket.emit("httpServer", "Initial Data"); }); 

Cliente del navegador

   

De esta manera, hay un socket abierto entre el servidor HTTP y el servidor TCP en Node.js.

Si necesita comunicarse servidor-servidor que websockets probablemente no sea la mejor opción. Pruebe una de las bibliotecas RPC , o simplemente use HTTP o su propio protocolo.

Puede usar socket.io o ws (solo WebSocket) en Node.js como cliente (no solo en el navegador)

 var io = require('socket.io-client'); var socket = io.connect('http://IP address of Websocket server'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); });