Suspense를 사용하여 파일 다운로드를 지연시키는 방법은?
- 파일 다운로드 요청을 처리하는 함수를 작성합니다. 이 함수는 파일을 서버에서 가져와 사용자에게 전달합니다.
const { createReadStream } = require('fs');
const { pipeline } = require('stream');
function downloadFile(req, res) {
const fileStream = createReadStream('path/to/file');
res.setHeader('Content-Disposition', 'attachment; filename=file.txt');
pipeline(fileStream, res, (err) => {
if (err) {
console.error('File download error:', err);
res.status(500).end();
}
});
}
- 다운로드 요청을 핸들링하는 라우터를 작성하고
suspense
미들웨어를 적용합니다. 이 미들웨어는 일정 시간 동안 응답을 지연시키는 역할을 합니다.
const express = require('express');
const suspense = require('express-suspense');
const app = express();
app.use(suspense({
delay: 3000 // 3초 동안 응답을 지연시킵니다.
}));
app.get('/download', (req, res) => {
downloadFile(req, res);
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
이제 위 코드를 실행하면 /download
경로로 요청을 보내면 파일 다운로드가 3초 후에 시작될 것입니다.
주의할 점은 suspense
미들웨어는 개발 환경에서만 사용하는 것이 좋습니다. 실제 서비스에서는 응답 시간을 지연시키는 것이 사용자 경험에 해를 끼칠 수 있으므로 주의해야 합니다.
참고 자료: