2

したがって、次のようなルート関数があります。

var http = require('http').createServer(start);

function start(req, res){
//routing stuff
}

その下には、socket.io イベント リスナーがあります。

io.sockets.on('connection', function(socket){

    socket.on('event', function(data){
        //perform an http response
    }

}

ソケット イベント 'event' が呼び出されたときに、次のような http 応答を実行したいと思います。

res.writeHead(200, {'Content-disposition': 'attachment; filename=file.zip'})
res.writeHead(200, { 'Content-Type': 'application/zip' });
var filestream = fs.createReadStream('file.zip');

filestream.on('data', function(chunk) {
    res.write(chunk);
});

filestream.on('end', function() {
    res.end();
});

この最後の部分は、ルーティング関数内で実行されると問題なく動作しますが、残念ながら、ソケット イベントから呼び出されると、「req」または「res」オブジェクトへの参照がないため、もちろん動作しません。どうすればこれを行うことができますか?ありがとう。

4

1 に答える 1