Node.js 如何创建节点js服务器套接字以在不同端口接收数据?
我需要一个套接字服务器,必须从服务器上不同端口的100个客户端接收数据。我已经创建了一个服务器套接字数组,不知道这是否正确 当我有大约100个客户端发送数据,并且由于某种原因服务器停止从10个客户端接收数据时,我还发现接收数据的速度很慢 以下是我的3个端口代码作为示例Node.js 如何创建节点js服务器套接字以在不同端口接收数据?,node.js,sockets,Node.js,Sockets,我需要一个套接字服务器,必须从服务器上不同端口的100个客户端接收数据。我已经创建了一个服务器套接字数组,不知道这是否正确 当我有大约100个客户端发送数据,并且由于某种原因服务器停止从10个客户端接收数据时,我还发现接收数据的速度很慢 以下是我的3个端口代码作为示例 var net = require('net'); var rl = require('readline'); var fs = require('fs'); var ports = [60001, 60002, 60003];
var net = require('net');
var rl = require('readline');
var fs = require('fs');
var ports = [60001, 60002, 60003];
var server = new Array();
ports.forEach(function(value) {
server[value] = net.createServer(function (socket) { // array of socket servers
socket.on('error', function(err) {
console.log(err.stack);
server[value].close();
server[value].listen(value); //start listen again
});
socket.on('end', function() {
console.log('client disconnected: ' + value);
server[value].close();
server[value].listen(value); //start listen again
});
console.log('client connected: ' + value);
var intf = rl.createInterface(socket, socket);
intf.on('line', function (line) {
fs.exists(__dirname + "\\file" + value.toString() + ".txt", function (exists) {
if(exists){
var stream = fs.createWriteStream(__dirname + "\\file" + value.toString() + ".txt", {'flags': 'a'});
} else {
var stream = fs.createWriteStream(__dirname + "\\file" + value.toString() + ".txt", {'flags': 'w'});
}
try {
stream.once('open', function(fd) {
console.log(value.toString() + " - " + line);
stream.write(line + "\r\n");
stream.end();
});
} catch (x) {
console.log(x.stack);
}
});
});
});
server[value].listen(value); // listen many ports
});
您是否考虑过使用反向代理将不同的端口转发到一个节点应用程序端口?我的问题是,这在我的客户中运行,因此我无法访问此类配置。我的客户说他不能更改任何配置。这就是我尝试这样做的方式。啊,这总是很糟糕。。。也许你可以重新使用连接侦听器:是的,我更改了这里发布的代码,我不再使用服务器套接字数组,因为我意识到这是不需要的。它正在工作,但在服务器第一次连接从客户机接收数据后,它看起来很正常,但在断开连接并再次连接后,客户机没有任何消息。。。我正在研究,看看发生了什么。。。谢谢你的帮助。。。