我試圖從流服務器通過套接字圖像客戶端的額外的大小,如果沒有發生斷開重新連接工作正常,但如果我沒有斷開代碼重新連接我意識到大小的增加。上的NodeJS插座斷開二進制流產生的數據
這裏是代碼樣品
服務器側
socket.on('get file', function() {
path = '../../../default/files/20141120_191129_0.jpg';
fs.stat(path, function (err, stat) {
if (err) {
console.log(err);
}
stream = fs.createReadStream(path,
{encoding: 'binary'});
stream.on('data', function (data) {
socket.emit('file', {"data": data, "size" : stat.size})
});
console.log(stat.size);
});
});
那塊代碼工作正常和日誌客戶端側 示出小於100%(上傳進度)
的console.log結果95.1968693802965 % chat (line 201) 2065278 chat (line 208) 1966080 chat (line 209) 98.37009835963973 % chat (line 201) 2065278 chat (line 208) 2031616 chat (line 209) 2065278
socket.on('connect', function() {
setTimeout(function() {
socket.emit('get file');
}, 1000);
});
var base64string = '';
var i =0;
socket.on('file', function (data) {i++;
console.log((base64string.length/data.size) * 100+" %");
base64string += data.data;
if(data.size == base64string.length){
buildimage(base64string);
}
})
function buildimage(base64str) {
console.log(base64str.length);
$("#img").attr("src", 'data:image/png;base64,' + btoa(base64str));
}
但是,如果我改變了客戶端斷開重新連接失敗,二進制數據大小比原始圖像尺寸更大
的console.log結果142.79530407044476 % chat (line 201) 2065278 chat (line 208) 2949120 chat (line 209) 145.96853304978796 % chat (line 201) 2065278 chat (line 208) 3014656
socket.on('connect', function() {
$('#chat').addClass('connected');
setTimeout(function() {
socket.emit('get file');
}, 1000);
});
var base64string = '';
var i =0;
socket.on('file', function (data) {i++;
console.log((base64string.length/data.size) * 100+" %");
if (i == 15) {
socket.disconnect();
console.log('disconnected');
socket.connect();
}
console.log(data.size);
console.log(base64string.length);
base64string += data.data;
if(data.size == base64string.length){
buildimage(base64string);
}
})
function buildimage(base64str) {
console.log(base64str.length);
$("#img").attr("src", 'data:image/png;base64,' + btoa(base64str));
}
爲什麼可變大小增加時斷開重新連接發生哪些給出錯誤的進度跟蹤