room/ <room_id>/
room/ <room_id>/ vote

클라이언트

클라이언트는 Room에 접속할 수 있다.

클라이언트는 서버에게 메시지를 전달할 수 있다.

클라이언트는 Room에 접속한 동안, 서버로부터 메시지를 전달받을 수 있다.

서버

서버는 최초 HTTP 연결 요청에서 Request URL을 통해 접속할 Room을 식별할 수 있다.

  1. 세션: 서버는 최초 HTTP 연결 요청에서 클라이언트에게 할당된 Session ID를 제공한다.

  2. JWT: 서버는 전달된 토큰으로부터 클라이언트 ID를 식별할 수 있다.

    토큰은 앱과 서버가 통신 및 인증할때 가장 많이 사용된다.
    왜냐하면 웹에는 쿠키와 세션이 있지만 앱에서는 없기 때문이다.
    

    출처: [Inpa Dev 👨‍💻:티스토리]

서버는 클라이언트로부터 전달받은 메시지를, 해당 유저가 접속한 Room에 대해 브로드캐스팅 할 수 있다.

서버는 모든 요청결과를 다음과 같은 정보를 담아 DB에 저장한다.

프로토콜 http / ws
URN path / roomID
유저ID sessionID / JWT
행동 connect(http), send(ws)
결과 statusCode (1000-)

타임 스탬프 기반 상태 관리