웹 애플리케이션에서 실시간 양방향 통신을 구현하기 위해 Socket.IO를 사용할 때, 브라우저의 보안 정책으로 인해 CORS(Cross-Origin Resource Sharing) 이슈가 발생할 수 있다.
이는 다른 도메인에서 오는 요청을 브라우저가 차단하기 때문이다.
이 문제를 해결하기 위해서는 Socket.IO 서버와 Express 앱 모두에서 CORS를 허용하도록 설정해야 한다.
아래 코드를 통해 이를 구현할 수 있다.
const io = socketIo(server, {
cors: {
origin: '*',
credentials: true
}
});
app.use(cors({
origin: '*',
credentials: true
}));
첫 번째 코드 블록은 Socket.IO 서버 인스턴스를 생성할 때 cors 옵션을 설정한다.
origin: '*'는 모든 출처(origin)에 대해 CORS를 허용하며, credentials: true는 인증 정보(쿠키 등)를 포함한 요청을 허용한다.
두 번째 코드 블록은 Express 앱에서 cors 미들웨어를 사용하여 CORS를 설정한다.
여기서도 마찬가지로 모든 출처와 인증 정보 요청을 허용한다.
이렇게 설정하면 Socket.IO 연결 및 통신 시 CORS 이슈가 해결되어 404 Not Found 오류가 발생하지 않을 것이다.