したがって、次のようなルート関数があります。
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」オブジェクトへの参照がないため、もちろん動作しません。どうすればこれを行うことができますか?ありがとう。