customer:
var chunk_size = 100;
var compressed_data = 'some-long-string';
var reg = new RegExp('/.{1,'+chunk_size+'}/g');
var parts = compressed_data .match(reg);
var l = parts.length -1;
client.socket.emit('data', parts.pop());
client.socket.on('received', function () {
client.socket.emit('data', [l - parts.lengt, parts.pop()]);
});
Server:
sockets.on('connection', function (socket) {
var parts = [];
socket.on('data', function (data) {
if (data[1] === undefined) {
fs.writeFile(parts.join(''), callback...);
} else {
parts[data[0]] = data[1];
socket.emit('received');
}
});
});
,
, "" , , ""
, , , ,
EDIT:
EDIT2:
,
, , , , , , 2 , , , , .
- , ( 1 , 1 , 0 100 .
https://github.com/nkzawa/socket.io-stream
- , github
:
var io = require('socket.io-client');
var ss = require('socket.io-stream');
var socket = io.connect('http://example.com/user');
var stream = ss.createStream();
var filename = 'profile.jpg';
var through = require('through');
var compressed_data = 'some-long-string';
var l = compressed_data .length;
var total_progress = 0;
var tr = through(function (chunk) {
total_progress += chunk.toString().length;
client.socket.emit('progress', l, total_progress);
this.queue(chunk)
}, function () {
client.socket.emit('progress', l, l);
})
ss(socket).emit('profile-image', stream, {name: filename});
fs.createReadStream(compressed_data ).pipe(tr).pipe(stream);
,
, ,