如果我有两台服务器,“客户端服务器”和“服务器2”。 “客户端服务器”的工作是从S3(AWS)读取文件,并使用socket.io将其传输到“Server2”。 “Server2”应该将数据存储在其磁盘上。
客户端服务器
var paramsWithRange = {
Bucket: bucketParams.Bucket,
Key: bucketParams.Key,
//Range: "bytes=" + byteStart.toString() + "-" + byteStop.toString()
};
router.get('/writeData', function(req, res) {
var ss = require("socket.io-stream");
var io = req.app.get('socketio');
........
............
function readFromS3(){
var ss = require("socket.io-stream");
var dataNodeSocket = io.connect('http://' + IP + ":5000");
var stream = ss.createStream();
var getFileName = nameNodeData['blockToDataNodes'][i]['key'].split('/');
var fileData = {
'mainFile': paramsWithRange['Key'].split('/')[1],
'blockName': getFileName[1]
};
ss(dataNodeSocket).emit('sendData', stream, fileData);
s3.getObject(paramsWithRange).createReadStream().pipe(stream);
}
}
服务器2
var dataNodeIO = require('socket.io')(server);
var ss = require("socket.io-stream");
dataNodeIO.on('connection', function(socket) {
console.log("Succesfully connected!");
ss(socket).on('sendData', function(stream, data) {
var IP = data['ipValue'];
var blockName = data['blockName'];
var mainFile = data['mainFile'];
dataNode.makeDir(mainFile);
dataNode.addToReport(mainFile, blockName);
stream.pipe(fs.createWriteStream(mainFile + '/' + blockName));
});
});
目前,我能够看到数据存储在“Server2”中,但是它只有部分数据,因为我可以通过检查文件大小来验证这一点。例如,我发送了一个100MB的文本文件,我只能在“Server2”上看到14MB。
我遵循发送数据/写入数据的socket.io-stream
文档,但我不确定为什么我只获取部分文件数据。