Socket.İo Nodejs - File Transfer
-
Merhaba arkadaşlar, üç dört gündür uğraştığım bir olay var çözemedim olayı hemen açıklıyorum.
browserdan socket.io ile dosyayı buffer kadar okuyup gönderiyorum, nodejs kısmında aldığı byteları dosyaya yazıyor.
Sorun şu ki gönderdiğim bütün dosyalar hasarlı. Kod kısımlarını koyuyorum.
Bu kısım dosyayı browserdan socket.emit ile bufferın uzunluğu 8192 byte okuyup gönderiyor.
if(parseInt(startbyte) != parseInt(stopbyte))
{
if (parseInt(startbyte) + buffer > parseInt(stopbyte))
{
buffer = parseInt(stopbyte) - parseInt(startbyte);
}
var filereader = new FileReaderSync();
var sli = file.slice(startbyte, startbyte + buffer);
var text = filereader.readAsBinaryString(sli);
startbyte += buffer;
socket.emit('upload_process', { 'Data': text });
}
else
{
socket.emit('upload_done');
self.terminate();
}Bu kısım nodejs den dosyayı alıp yazan yer
fs.write(fdx, data['Data'], null, 'Binary', function(err, Writen){ //Binary
socket.emit('upload_hearth');
});upload_heard geldiği zaman bir sonraki buffer sırasını tekrar gönderiyor. Bu şekilde oluşturduğum dosyaların hepsi hasarlı.
Fikri olan ? -
sorun çözümü,
socket.io yu file transferde kullanmayın, bytelar bozuluyor veya bilmiyorum nedenini.
formidable ismindeki library'yi kendi istediğim şekilde %50 gibi bir kısımını editledim. ayrıca socket.io dan çok daha hızlı file transfer konusunda.