Suspense를 사용하여 파일 다운로드를 지연시키는 방법은?
  1. 파일 다운로드 요청을 처리하는 함수를 작성합니다. 이 함수는 파일을 서버에서 가져와 사용자에게 전달합니다.
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();
    }
  });
}
  1. 다운로드 요청을 핸들링하는 라우터를 작성하고 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 미들웨어는 개발 환경에서만 사용하는 것이 좋습니다. 실제 서비스에서는 응답 시간을 지연시키는 것이 사용자 경험에 해를 끼칠 수 있으므로 주의해야 합니다.

참고 자료: