我正在尝试加快 Node.js 的速度,我一直在尝试完成的一件事是模仿一个简单的文件传输代理,其中 Node 充当侦听服务器。这需要节点监听 tcp 套接字请求,然后接受二进制数据流并将其存储在系统中。
到目前为止我所拥有的是,服务器仍然不存储任何东西,只是输出它接收到的数据,或者它应该。
服务器:
var net = require('net');
var fs = require('fs');
var buffer = require('buffer');
var server = net.createServer(function() {
console.log('server connected');
});
var HOST = '127.0.0.1';
var PORT = '9001'
var FILEPATH = '/home/steve/Downloads/';
server.listen(PORT, HOST, function() {
//listening
console.log('server bound to ' + PORT + '\n');
server.on('connection', function(){
console.log('connection made...\n')
})
server.on('data', function(data) {
console.log('data received');
console.log('data is: \n' + data);
});
});
为了简单起见,我还在 Node 中编写了一个客户端的 hack。
客户:
var net = require('net');
var fs = require('fs');
var PORT = 9001;
var HOST = '127.0.0.1';
var FILEPATH = '/home/steve/Work/Node.js/FileTransfer/random.fil';
var client = new net.Socket()
//connect to the server
client.connect(PORT,HOST,function() {
'Client Connected to server'
//send a file to the server
var fileStream = fs.createReadStream(FILEPATH);
fileStream.on('error', function(err){
console.log(err);
})
fileStream.on('open',function() {
fileStream.pipe(client);
});
});
//handle closed
client.on('close', function() {
console.log('server closed connection')
});
client.on('error', function(err) {
console.log(err);
});
当我运行它们时,我没有收到任何错误,但服务器只是创建服务器,接受连接然后关闭它。除此之外,我似乎无法弄清楚。此外,这是否是传输约 1GB 范围内的大文件的一个不错的解决方案,还是 Node 根本不适合这样的事情?
TIA