JPA를 이용하여 CRUD 기능이 가능하도록 한다.
WebRTC를 이용하여 코드 공유 IDE와 음성 채팅 기능이 가능하도록 한다. 음성 채팅은 쿠렌토 미디어 서버를 사용하며 SFU 방식으로 미디어 서버를 구성한다.
웹소켓을 이용하여 텍스트 채팅과 그림 그리기 기능이 가능하도록 한다.
테이블ID: room
컬럼명 | 컬럼ID | 타입 및 길이 | 설명 |
---|---|---|---|
방 ID | room_id | INT | PK, NOT NULL, AUTO_INCREMENT |
생성자 ID | host_id | VARCHAR(32) | FK, NOT NULL, UNIQUE |
제목 | title | VARCHAR(45) | NOT NULL |
설명 | content | VARCHAR(255) | |
생성자의 도움 점수 | host_rating | INT | 기본값=0 |
시작 시간 | start_time | TIMESTAMP | NOT NULL, 현재 시간 |
모드 | mode | VARCHAR(10) | NOT NULL, (study, relay) |
타입 | is_live | TINYINT | (1은 live, 0은 아직 호스트 입장 전), 기본값=0 |
참여자 수 | number_users | INT | |
최대 참여자 수 | max | INT | 기본값=10, (2~10) |
기능 | URI | 요청방식 | body | response | 설명 |
---|---|---|---|---|---|
목록 조회 | /session?mode={mode}&hostId={host_id}&title={title} | GET | - 성공: 200, {방정보, …} |
오류 시나리오 | 처리 | 해결 여부 |
---|---|---|
생성 오류: 전에 만든 방이 삭제 처리가 안됐을 경우 새로운 방 생성 에 실패한다. | 전에 만든 방이 있는 경우, DB에서 해당 방을 삭제한다. | |
HTTP 상태코드 500 을 보낸다. |
||
Front-end에서는 사용자에게 방 생성을 다시 시도하도록 한다. | O | |
수정 오류: 수정 도중에 해당 방이 삭제 됐을 경우, 존재하지 않는 방을 수정하려는 경우 수정에 실패한다. | HTTP 상태코드 404 을 보낸다. |
|
Front-end에서는 사용자에게 유효하지 않은 세션 방이라고 알린다. | ||
사용자를 세션 방 목록 페이지로 이동시킨다. | O | |
수정 오류: DB에서 수정에 실패했을 경우 | HTTP 상태코드 500 을 보낸다. |
|
Front-end에서는 사용자에게 수정에 실패했다고 알린다. | O | |
삭제 오류: 삭제하려는 도중에 이미 해당 방이 삭제 됐을 경우, 존재하지 않는 방을 삭제하려는 경우 삭제에 실패한다. | HTTP 상태코드 404 을 보낸다. |
|
Front-end에서는 사용자에게 유효하지 않은 세션 방이라고 알리고, 사용자를 세션 방 목록 페이지로 이동시킨다. | O | |
삭제 오류: DB에서 삭제에 실패했을 경우 | HTTP 상태코드 500 을 보낸다. |
|
Front-end에서는 사용자에게 삭제에 실패했다고 알린다. | O | |
입장 오류: 세션 대기 방에서 ‘입장하기’ 버튼을 눌렀는데, 해당 세션 방이 이미 삭제된 경우 세션 방 입장에 실패한다. | HTTP 상태코드 404 을 받았다면 사용자에게 존재하지 않는 세션 방이라고 알린다. |
|
사용자를 세션 방 목록 페이지로 이동시킨다. | O | |
Exception: 알 수 없는 사용자가 세션 방에서 나간 경우 | try-catch 로 오류를 처리한다. |
O |
Exception: 알 수 없는 사용자에게 메시지를 보낸 경우 | try-catch 로 오류를 처리한다. |
O |
Exception: 사용자에 대한 미디어 통신 해제에 실패한 경우 | try-catch 로 오류를 처리한다. |
O |
Exception: 웹소켓으로 메시지 보내기에 실패한 경우 | try-catch 로 오류를 처리한다. |
O |
Exception: 세션 방 입장에 실패한 경우 | try-catch 로 오류를 처리한다. |
O |