Créer des WebSockets entre un serveur TCP et un serveur HTTP dans node.js

J’ai créé un serveur TCP en utilisant Node.js qui écoute les connexions des clients. J’ai besoin de transmettre à nouveau les données du serveur TCP au serveur HTTP dans Node.js éventuellement via un Websocket ( socket.io ).

Cependant, je ne sais pas comment créer une telle connexion de telle sorte que le serveur TCP puisse transmettre des données à un serveur HTTP via Websocket.

Merci beaucoup.

J’essayais beaucoup de choses pour obtenir ce travail. La plupart du temps, je m’appuyais sur socket.io pour que cela fonctionne, mais cela ne fonctionnait tout simplement pas avec TCP.

Cependant, net.Socket suffit.

Voici l’exemple de travail de celui-ci.

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

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

Navigateur Client

   

De cette façon, un socket est ouvert entre le serveur HTTP et le serveur TCP dans Node.js.

Si vous avez besoin de communiquer serveur-serveur, websockets n’est probablement pas le meilleur choix. Essayez l’une des bibliothèques RPC , ou utilisez simplement HTTP ou votre propre protocole.

Vous pouvez utiliser socket.io ou ws (uniquement WebSocket) sur Node.js en tant que client (pas uniquement dans le navigateur).

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