Skip to content

WebSocket Message Protocol

hyoguoo edited this page Apr 1, 2024 · 3 revisions

메시징 전송 프로토콜인 STOMP를 사용하여 실시간 통신을 위한 규칙을 정의한다.

  • 발행: /publication/*에 메시지를 발행하여 구독자에게 메시지를 전송
    • *: 발행할 메시지의 종류(본 프로젝트에선 기능에 따라 종류를 구분한다.)
  • 구독: /subscription/*에 메시지를 구독하여 발행된 메시지를 수신
    • *: 구독할 메시지의 채널(본 프로젝트에선 roomShortUuid를 사용하여 채널을 구분한다.)

Socket Test Client를 통해 기본 연결 테스트를 수행할 수 있다.


Publication

필요한 기능에 맞는 endpoint에 해당하는 메시지를 전송하여 구독자에게 메시지를 전송한다.

  • enter : 방 입장
  • quit : 방 퇴장
  • message : 메시지 전송
  • ready : 준비 상태로 변경
  • unready : 준비 해제 상태로 변경
  • change-host : 방장 변경(message에 변경 할 member id 전송)
  • start-coding : 문제 풀이 시작
  • end-coding : 문제 풀이 종료
{
  "roomShortUuid": "o5959c5g",
  "message": "Hello, World!"
}

요청 시엔 Authorization 헤더에 Bearer Token을 포함하여 인증을 수행하여 사용자를 식별할 수 있도록 한다.


Subscription

Publication을 통해 발행 된 메시지는 서버에서 필요한 로직을 처리한 후 구독자에게 전송한다.
발행한 메시지 종류에 따라 type 필드를 통해 구분한다.

  • enter : member id 방 입장(value = 입장 멤버 닉네임)
  • quit : member id 방 퇴장(value = 퇴장 멤버 닉네임)
  • message : member id 에 의해 메시지 전송 됨(value = 메시지)
  • ready : member id 준비 완료
  • unready : member id 준비 해제
  • change-host : member id로 방장 변경
  • start-coding : member id에 의해 문제 풀이 시작(value = 코드 풀이 종료 시간)
  • end-coding : memberr id에 의해 문제 풀이 종료
{
  "memberId": 1,
  "type": "message",
  "value": "Hello World!",
  "timestamp": "2024-03-10T02:14:32.662070"
}
Clone this wiki locally