I have tried many things to get this working. Most of the time I relied on socket.io to make this work, but it just didn't work with TCP.
However, net.Socket makes sense.
Here is a working example.
TCP server
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);
HTTP server
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; 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"); });
Browser client
<script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost'); socket.on('httpServer', function (data) { console.log(data); document.write(data + "\r\n"); socket.emit('tcp', "For TCP"); }); </script>
So there is a socket between the HTTP server and the TCP server open in Node.js.
Ravish
source share