gpt4 book ai didi

node.js - 在 node.js 中的 TCP 服务器和 HTTP 服务器之间创建 WebSockets

转载 作者:搜寻专家 更新时间:2023-10-31 22:22:55 25 4
gpt4 key购买 nike

我使用 Node.js 创建了一个 TCP 服务器,它监听客户端连接。我需要在 Node.js 中再次将数据从 TCP 服务器 传输到 HTTP 服务器 可能通过 Websocket(socket.io)。

但是,我不知道如何创建这样的连接,以便 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 服务器之间就打开了一个套接字。

关于node.js - 在 node.js 中的 TCP 服务器和 HTTP 服务器之间创建 WebSockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11967958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com