在node.js中的TCP服务器和HTTP服务器之间创buildWebSockets

我已经创build了一个使用Node.js侦听客户端连接的TCP服务器 。 我需要通过Websocketsocket.io )在Node.js中再次将数据从TCP服务器传输到HTTP服务器

但是,我不知道如何创build这样的连接,使得TCP服务器能够通过Websocket将数据推送到HTTP服务器。

非常感谢。

我正在尝试很多事情来完成这项工作。 大部分时间我依靠socket.io来获得这个工作,但它只是不能与TCP工作。

但是, net.Socket就足够了。

这是它的工作示例。

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

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

浏览器客户端

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

这样,Node.js中的HTTP服务器和TCP服务器之间就有一个socket被打开了。

如果您需要与websockets进行通信的服务器 – 服务器可能不是一个最好的select。 尝试一个RPC库 ,或者只使用HTTP或您自己的协议。

您可以在Node.js上使用socket.io或ws(仅限WebSocket)作为客户端(不仅在浏览器中)

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