Skip to content

채팅 기능 구현을 위해 WebSocket을 선택한 이유

Gyeongsu Choi edited this page Oct 29, 2024 · 1 revision

SSE vs Long Polling vs WebSocket

게임방 내에서 실시간 채팅 기능을 구현하기 위한 선택지가 아래와 같이 세 가지 있었습니다.

  1. SSE(Server Sent Events)
  2. Long Polling
  3. WebSocket

이 글에서는 위 세 가지 방법을 하나씩 알아보고 저희 서비스에 적합한 기술을 선택하는 과정을 담았습니다.

먼저, SSE는 클라이언트가 서버로 요청을 보내지 않아도 서버에서 클라이언트로 데이터를 보낼 수 있는 기술입니다. 그러나 서버에서 클라이언트로 향하는 단방향 연결이기 때문에 클라이언트에서 서버로 요청을 보낼 때는 HTTP 요청을 사용해야 하며 이는 여러 클라이언트가 실시간으로 채팅을 해야하는 저희 서비스에서는 적합하지 않다고 생각했습니다.

다음으로, Long Polling 방식은 클라이언트가 서버로 HTTP 요청을 보내고 서버는 일정 시간이 지나고 응답을 보내는 방식입니다. 서버는 데이터의 변경이 발생하거나 정해진 타임아웃 시간이 지나면 클라이언트에게 응답을 보내게 됩니다. 이를 받은 클라이언트는 다시 서버에게 요청을 보냅니다. Long Polling 방식의 단점은 아래와 같습니다.

  • 데이터가 빈번히 바뀌게 되면 서버와 클라이언트가 일반적인 Polling 방식에서보다 많은 요청과 응답을 주고 받게 됩니다
  • 다수의 클라이언트에게 동시에 이벤트가 발생하게 되면 클라이언트가 요청을 동시에 보내게 되기 때문에 서버의 부담이 급증할 수 있습니다

저희 서비스에서 구현하려는 채팅 기능은 게임이 진행되는 가운데 실시간으로 많은 채팅이 오가는 상황이므로 위와 같은 단점은 치명적이라고 생각하였습니다. 따라서 WebSocket을 선택하게 되었습니다.

참고자료

MafiaCamp

📔소개
🎯프로젝트 규칙
💻프로젝트 기획
🍀기술 스택
📚그룹 회고
🌈개발 일지
🍀문제 해결 경험
🔧트러블 슈팅
Clone this wiki locally