방(rooms) 기능에서 무엇을 하느냐에 따라 웹소켓과 HTTP(REST API)를 섞어서 사용하는 것이 가장 효율적

결론 → 방 목록 조회 및 생성은 HTTP로, 방 내부의 실시간 상태 변화는 웹소켓으로 처리


1. 왜 나누어서 연결하는가?

모든 것을 웹소켓으로 처리하면 서버 연결 유지(Connection) 비용이 너무 커짐.

기능 통신 방식 이유
방 목록 조회 (탐색) HTTP (GET) 사용자가 앱에 접속했을 때 한 번만 데이터를 받아오면 됨.
방 만들기 (생성) HTTP (POST) 방 생성 후 성공 응답을 받고 방 ID를 받아오는 과정
방 내부 실시간 통신 WebSocket 입퇴장, 채팅, 게임 시작, 마이크 상태 등 실시간성이 핵심

2. 웹소켓이 반드시 필요한 "방" 관련 로직

방에 입장한 이후부터는 모든 것이 웹소켓으로 돌아가야 함.


3. 통신 흐름 (Flow)

  1. 방 목록 조회 (HTTP): 메인 화면 접속 시 GET /rooms 호출.
  2. 방 생성 (HTTP): 방 만들기 버튼 클릭 시 POST /rooms 호출 후 roomId 응답 받음.
  3. 방 입장 (WebSocket Connect): 응답받은 roomId를 가지고 웹소켓 서버의 해당 방(Namespace 또는 Room)으로 접속.
  4. 실시간 상호작용 (WebSocket): 이후 채팅, 음성, 게임 등은 소켓을 통해 브로드캐스팅됨.