使用以下代码我可以使用socket.io将图像发送到客户端,但我还希望将大小作为第二个参数发送。我想理解为什么当我尝试将它传递给socket.emit函数时,参数“size”总是未定义的。 socket.emit('firstChunkSent', data, size)
。你能解决它吗?
var io = require('../server').io
io.sockets.on('connection', function (socket) {
socket.on('imageRequest', function () {
getTheNewImage(function(data,size){
socket.emit('firstChunkSent', data, size)
});
});
});
function getTheNewImage(callback){
var filename = 'image.gif';
var base64FileSize = fs.stat(filename,function(err,stats){
if (err) { throw err; }
return stats.size
});
var readable = fs.createReadStream(filename, { encoding: 'base64' });
readable.on('readable', function() {
var getImageData = function(){
while (null !== (base64ImageData = readable.read())) {
return base64ImageData
}
}
callback(getImageData(),base64FileSize)
});
readable.on('end', function() {
console.log('there will be no more data.')
});
readable.on('error', function(err) {
console.log('here is the error: '+err)
readable.end(err);
});
答案 0 :(得分:0)
return stats.size
需要使用回调
function getTheNewImage(callback){
var filename = 'image.gif';
var base64FileSize = fs.stat(filename,function(err,stats){
if (err) return callback(new Error(err));
callback(null, stats.size)
});
getTheNewImage(function(data,size)
第一个参数将是错误,而不是数据