【问题标题】:Sending images to the client with nodejs and socket.io使用 nodejs 和 socket.io 将图像发送到客户端
【发布时间】:2014-03-01 14:48:45
【问题描述】:

使用以下代码,我可以使用 socket.io 将图像发送到客户端,但我还想将大小作为第二个参数发送。我想了解为什么当我尝试将参数“大小”传递给 socket.emit 函数时,它总是未定义。 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);

});

【问题讨论】:

    标签: javascript node.js callback socket.io


    【解决方案1】:
    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)
    

    第一个参数将是错误,而不是数据

    【讨论】:

    • callback(getImageData(),base64FileSize)readable.on('readable', function() etc.. 内部被调用
    猜你喜欢
    • 1970-01-01
    • 2018-07-01
    • 2014-08-17
    • 1970-01-01
    • 2014-12-31
    • 2021-11-11
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多