Code Monkey home page Code Monkey logo

sgs-be's Introduction

StudyHub - Backend Repo

WebRTC 기반 스터디 웹 애플리케이션

목차

1. 목표
2. 주요 기능
3. 사용 기술
4. 아키텍처
5. 상세 기능
6. 서버별 주요 코드
7. 서버별 주요 고려사항
8. Docs

목표

원격, 실시간으로 스터디에 참여할 수 있도록하여 학습동기를 부여한다. 또한, 이를 지원하기위해 WebRTC를 활용하여 화면 공유, 자료 공유 등을 제공하며, 채팅, 일정 관리 기능을 통해 효율성을 높인다.

주요 기능

  1. 스터디 그룹 형성: 사용자들이 특정 주제나 과목에 관심을 가지고 함께 스터디 그룹을 형성할 수 있다.
  2. 실시간 모임: 원격으로 스터디 그룹 멤버들이 스터디방을 생성하고 참여할 수 있다.
  3. 자료 공유: 사용자들은 공부 자료, 노트, 문제 해결 방법 등을 공유하고 함께 작업할 수 있다.
  4. 화면 공유: 화면 공유 기능을 통해 다른 사용자들에게 자신의 화면을 보여주고 설명할 수 있다.
  5. 채팅: 실시간 채팅 기능을 통해 멤버들은 토론하거나 질문을 주고받을 수 있다.
  6. 캘린더 및 시간 관리: 개인 학습 일정 또는 개인 학습 시간을 기록할 수 있다.

사용 기술

  • 백엔드 : Spring Boot, Spring Cloud(Eureka, Gateway)
  • 데이터베이스 : MySQL, MongoDB
  • 메시지 브로커 : Kafka
  • 캐시 : Redis
  • 배포 : Docker, AWS EC2, AWS RDS, AWS S3, Mongo Atlas, Git Action

아키텍처

전체 아키텍처 배포 아키텍처
아키텍처 스크린샷 2023-04-09 오전 1 35 53

상세 기능

채팅 상태관리

서버별 주요 코드


배포

서비스 URL 포트 풀
전체(Gateway) http://${AWS-public-IP} :8000
유저 http://${AWS-public-IP} :8021~8029
채팅 http://${AWS-public-IP} :8031~8039
시그널링 http://${AWS-public-IP} :8051~8059
그룹관리 http://${AWS-public-IP} :8061~8069
상태관리 http://${AWS-public-IP} :8091~8099

서버별 주요 고려사항


채팅 서버

  • Kafka는 메시지 큐와 같은 역할을 수행한다. 따라서, 채팅 서버가 여러 개 있는 경우 분산되어 요청되는 채팅에 대해서도 원활하게 처리한다.
  • STOMP를 사용하였으며 pub/sub구조를 활용한다. 채팅 서버는 이를 통해 subscribe를 intercept하여 구독한 방으로 현재 사용자의 접속 상태 및 접속 위치를 파악한다.
  • 고려한 점
    • Kafka에 파일, 이미지 등의 blob 데이터가 들어간 경우 채팅 서버 전반적인 성능의 하락이 일어날 수 있다고 생각하였다. (Blob 데이터가 사용자 -> 채팅, 채팅 -> 카프카, 카프카 -> 채팅으로 3회 전달)
    • 따라서, 이를 극복하기 위해 HTTP 통신으로 채팅 서버에 blob 데이터를 전달하고, 이를 AWS S3로부터 uri로 반환하여, 해당 uri로 kafka에 produce 되도록 구현하였다. (Blob 데이터가 사용자 -> 채팅, 채팅 -> AWS S3로 2회 전달되고 이 후 uri를 반환받아 uri 가 채팅 <-> 카프카로 전달)

상태관리 서버

  • 상태관리 서버는 Cache Storage인 Redis에 실시간 데이터를 저장.
  • 여러 서버에서 동시에 Redis에 접근하지 않고 상태관리를 위한 상태관리 서버를 별도로 구현
  • 실시간성을 높이기 위해 TCP 통신을 활용

  • 접속 상태 관리 방법
    • 사용자 접속 시 스터디방에 들어가지 않더라도 Default(전체) 스터디 방 소켓에 연결
    • 사용자가 스터디방 들어가면 해당 스터디방 소켓에 연결
    • 따라서 중복 입장을 막고 항상 소켓을 하나에만 연결하여 소켓 연결 여부(웹소켓 세션)를 통해 접속 상태 관리
  • 이유
    • 접속 상태를 위해 별개의 소켓을 연결하게 되면 스터디방 접속 시 소켓을 두개 연결해야한다.
    • 10000명이 접속한다고 치면 10000개의 소켓 연결 대신 20000개(채팅 소켓 + 접속 확인용 소켓)의 소켓을 연결해야하는 셈
    • 그러나, 제시한 방법의 경우에도 스터디방에 접속하지 않더라도 소켓이 Default 스터디방에 연결되어 있음.

Docs

sgs-be's People

Contributors

jhl8109 avatar kimdonwoo avatar jaehanbyun avatar wogusqkr0515 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

sgs-be's Issues

[Feat] JwtToken 관련 Filter 추가

기능 이슈

Description

Room Server에 들어오는 모든 request에 대해 Header에 있는 JWT token안에 있는 데이터를 꺼내서 Controller에 전달하는 Filter 개발


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • JwtToken 클래스에 Claims 에 있는 데이터 꺼내는 메소드 구현
  • 모든 request가 JwtTokenFilter를 거친 후 Controller에 가도록 설정

[Feat] 룸서버 - 방장이 나갔을 때, 방 폭파 대신 방장 위임으로 수정

기능 이슈

Description

유저가 나가서 roomOut TCP 요청을 상태관리서버로부터 받으면, 유저가 방장인지 아닌지에 따라 구분하여 응답해줍니다. 방장이 방을 나가면 방폭파시키는 것 대신, 남아 있는 유저중 가장 먼저 들어온 유저를 골라 방장위임을 하는 식으로 수정하였습니다.


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 일반 유저 또는 방장이 방을 나가서 상태관리서버로 부터 TCP 요청이오면 방인원 수 감소하고 방 인원이 0명이면 방을 삭제하도록 구현
  • 일반 유저 나가면 해당 userRoom에 leftAt에 기록
  • 방장이 나가면 현재 방에 남아있는 유저중에 accessAt이 가장 빠른 유저로 방장을 위임하고 상태관리서버로 응답을 보내줌

[Feat] timer관련 메시지 기능 구현

기능 이슈

Description

시그널링 서버와 웹소켓으로 연결된 클라이언트가 Timer Start/Stop의 request를 보내면 시그널링서버에서 상태 관리 서버로 TCP Message를 보내는 기능을 구현함


To-do

  • 상태관리서버랑 Spring Integration으로 TCP 통신을 하기위한 기본설정
  • Timer관련 요청이 오면 상태관리 서버로 TCPMessage 보내는 기능 구현

[Fix] 실시간 정보 Redis 로직 수정

Description

상태관리 서버의 실시간 정보 Redis 로직 수정


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • redis 조회 시 데이터가 없으면 비어있는 객체에 null 값들을 필드들에 담아 응답.
  • Json 변환 Bean 활용
  • 유저서버에 복수 ID 요청 -> 단일 ID로 요청
  • RedisService 함수명 정리
  • MessageService 코드 정리

[Feat] 상태관리서버 - 스터디방 In/Out 시 유저 공부 시간 관리

기능 이슈

Description

상태관리서버 - GET_STUDY_TIME / SET_STUDY_TIME


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 시그널링 서버에서 채팅방 입장 시, 유저의 공부 시간 받아오기 (type = STUDY_TIME_FROM_TCP)
  • 시그널링 서버에서 채팅방 나갈 시, 유저의 공부 시간 저장하기 (type = STUDY_TIME_TO_TCP)

참고자료

  • 시그널링 서버에 내부적으로 공부 시간을 관리하기 때문에 ROOM IN/OUT 시 시간을 조회, 저장만 하면 됨.

[Feat] 상태관리 서버 예외 및 에러 핸들링 구현

기능 이슈

Description

상태관리 서버 예외 및 에러 핸들링 구현


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 에러 코드 정의 및 enum 클래스 구현
  • 예외 클래스 구현
  • 에러 응답 클래스 구현
  • 예외 발생 위치 및 핸들러 구현

참고자료 및 기타

참고자료가 있다면 첨부해주세요


[Setting] Kafka 기본 설정

Setting

Description

Kafka 기본 설정


To-do

Producer, Consumer, WebSocket 설정

  • Producer 설정
  • Consumer 설정
  • WebSocket 설정
  • kafka & zookeeper - �docker 설정

참고자료 및 기타

Producer : 메시지 전송, 9092포트
Consumer : 메시지 수신, 9092포트
WebSocket: Stomp 사용, consumer 구독


[Feat] 상세 정보 조회와 공지사항 설정 기능 구현

Feat

Description

대기실에서 공개방에 대해 상세 정보 조회를 하고 싶을때 사용하는 API와
방 내부에서 방장이 공지사항 설정을 할 수 있는 API


To-do

  • 상세 정보 조회 기능 구현
  • 공지사항 설정 기능 구현

[Feat] 채팅서버 - 접속 상태 관리 구현 로직 변경

기능 이슈

Description

채팅서버 - 접속 상태 관리 구현 로직 변경


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • RoomId 를 String -> Long
  • Subcribe : 채팅방 접속, Disconnect : 채팅방 접속 해제

참고자료 및 기타

Subscribe시 Unsubscribe도 같이 호출되는 오류..?


[BUG] 채팅서버 - 채팅 저장 시 LocalDateTime 관련 에러

Bug

LocalDateTime 에러

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type java.time.LocalDateTime not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: pnu.cse.studyhub.chat.repository.entity.Chat["createdAt"])



어떤 상황에서 겪으셨나요?

채팅방에 메세지 전송 시 에러 발생



참고할만한 자료가 있을까요?

JavaTime Module
에러 관련 블로그
Jackson 버전을 올리면되지 않을까?
MongoDB에서 시간 저장을 Java 8버전을 지원하기 때문인가?



[BUG] 시그널링 -> 상태관리 서버 request에 따른 클래스(상위-> 하위) 변환 문제

버그 리포트

어떤 버그인가요?

시그널링 -> 상태관리서버 테스트 중, TCPSignlingReceiveSchedulingRequest로 변환 에러 발생



어떤 상황에서 겪으셨나요?

TCPSignalingReceiveRequest signalingRequest = (TCPSignalingReceiveRequest) response;
TCPSignalingReceiveSchedulingRequest signalingSchedulingRequest = (TCPSignalingReceiveSchedulingRequest) response;
코드에서 TCPSignalingRequest 입력 시 TCPSignalingReceiveSchedulingRequest도 통과하면서 변환 Exception 발생



참고할만한 자료가 있을까요?

상위 클래스에서 하위 클래스로 변환하는 로직 구상



[Feat] 경고, 강제퇴장, 경고 누적 퇴장, 방장 위임 기능 구현

기능 이슈

Description

룸서버 -> 상태관리서버 -> 시그널링 서버 관련 기능 추가 : 경고, 강제 퇴장, 경고 누적 퇴장, 방장 위임


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 상태관리 서버 TCP 명세에 추가 사항 기록
  • 상태관리 서버가 룸서버에서 통신 수신하는 부분 구현
  • 상태관리 서버가 시그널링으로 통신 송신하는 부분 구현

참고자료 및 기타

참고자료가 있다면 첨부해주세요

스크린샷 2023-06-09 오후 4 05 09 스크린샷 2023-06-09 오후 4 06 13

[Feat] 시그널링 서버 - 방장이 나갔을 때, 바뀐 방장을 남아 있는 유저들에게 알리는 기능 구현

기능 이슈

Description

상태관리서버로부터 userStudyTimeToTCP의 응답으로 해당 방의 방장이 바꼈다는 응답이 오면 남아있는 유저들에게 방장이 바꼈다는 메시지를 웹소켓으로 전달합니다


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 상태관리서버로부터 userStudyTimeToTCP의 응답으로 해당 방의 방장이 바꼈다는 응답이 오면 Converter로 변환 구현
  • 해당 방에 남아있는 유저들에게 방장이 바꼈다는 메시지를 웹소켓으로 전달하는 기능 구현

[Feat] 웹 소켓을 활용한 접속 상태 구현

Feat

Description

웹 소켓을 활용한 접속 상태 구현


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 웹 소켓 세션 저장
  • 웹 소켓 연결/해제 구현
  • TCP Client/Server 구현
  • 웹 소켓 연결/해제 시 해당 정보를 상태관리 서버에 TCP 정보 보냄
  • TCP Server 소켓 세션 저장 구현

참고자료 및 기타

WebSocket Handler
TCP Client


[Feat] 룸서버 - 상태관리서버와의 TCP 연결후 방 퇴장 구현

기능 이슈

Description

유저가 방에서 나가게되면 상태관리서버에서 룸서버로 TCP request를 날려주고 룸서버는 받으면 해당 방의 인원을 감소하거나 방을 삭제합니다


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • Spring Integration을 활용한 상태관리서버와의 TCP 연결 Setting
  • 상태관리서버로부터 TCP request가 오면 userId와 roomId에 따라 해당 방의 현재인원 수 감소 또는 방삭제 기능 구현

[BUG] 채팅 서버 - SockJs의 경우 연결 안되는 문제

버그 리포트

SockJs의 경우 연결 안되는 문제

채팅 서버에 SockJs를 통한 소켓 연결이 제대로 안됨.



WebSocket은 동작하지만 SockJs의 경우 동작하지 않음.

STOMP 설정에서 setAllowedOrigin(*) 관련 에러로 추측



[Feat] 시그널링 서버 Timer 기능 추가

기능 이슈

Description

같은 방에 존재하는 유저들끼리 공부시간을 공유하기 위한 Timer 기능 추가


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 새로운 유저가 방에 입장했을 때, 기존 유저들과 새 유저간의 타이머 상태, 공부시간 공유
  • 유저가 timer를 시작하거나 멈췄을 때, 모든 유저들에게 timerStateAnswer을 보내도록 구현
  • 방 나갈때 timer 저장 기능 구현

[Feat] 채팅 서버 예외 및 에러 핸들링 구현

기능 이슈

Description

에러 핸들링 구현


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 에러 코드 정의 및 enum 클래스 구현
  • 예외 클래스 구현
  • 에러 응답 클래스 구현
  • 예외 발생 위치 및 핸들러 구현

[Feat] 채팅 내역 가져오기

Feat

Description

스터디 그룹의 채팅 내역 가져오기


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • MongoDB에 스터디 그룹별 채팅 어떻게 관리하는 지 조사
  • 스터디 그룹별 채팅 내역 가져오기
  • 채팅 내역 페이지네이션
  • 채팅 저장 및 쿼리 테스트

참고자료 및 기타

room 컬렉션, message 컬렉션 분리 VS room 객체 내부에 message를 배열로 구현
https://stackoverflow.com/questions/11228351/mongodb-structure-for-message-app


[Feat] 상태관리서버 - 유저 공부 시간 정보 알림

기능 이슈

Description

유저 서버에서 공부시간 요청 시 사용자의 공부 시간 알림.


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 유저 서버로부터 TCP 요청 받는 부분 구현
  • TCP 응답 구현
  • userId가 배열로 올 경우도 고려하여 구현

[Feat] 상태관리서버로 요청해서 받은 응답으로 user 객체 생성 구현

기능 이슈

Description

시그널링 서버와 상태관리 서버를 연결해서 userSession 객체 생성 전에 상태관리서버로 유저에대한 studyTime을 요청하고
응답 받아서 객체 생성


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 상태관리서버로 TCP 요청해서 받아서 역직렬화로 처리 후 userSession 객체 생성
  • 상태관리서버가 studyTime으로 null을 보냈을때, studyTime 00:00:00의 studyTime으로 userSession 객체 생성

[Hotfix] Mongo Atlas URI 노출

Hotfix

Description

Mongo Atlas URI 노출


To-do

환경 변수화

  • 환경 변수 설정 및 이를 반영하도록 코드 변경

참고자료 및 기타

스크린샷 2023-03-30 오전 12 08 07

추가로 암호화(jasypt)의 방법도 존재


[Feat] webRTC 카메라 공유 기능 구현

기능 이슈

Description

  1. 유저가 TURN/STUN 서버로부터 ICE Candidate 를 생성하고 SDP를 생성한 후,
    Signaling Server로 같은 그룹/방 유저들끼리 주고받는다
  2. 주고받은 데이터를 기반으로 Kurento Media Server를 통해 SFU 방식으로
    미디어 스트림을 주고받는다.

To-do

  • docker-compose를 통한 Kurento 서버, TURN/STUN 서버 연결
  • webRTC 카메라 영상 공유 기능 구현

[Feat] 시그널링 서버 - 스케줄러 기능 구현

기능 이슈

Description

새벽 5시마다, 현재방에 접속되어 웹소켓이 연결된 유저들의 공부시간을 상태관리서버로 보내고 초기화하는 스케줄러 구현

To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 새벽 5시마다 시그널링 서버에 존재하는 모든 유저 객체의 공부시간을 상태관리서버로 보내고 00:00:00로 초기화
  • 성공적으로 보내고나면 유저들에게 웹소켓으로 메시지 전달

[Feat] 상태관리서버 - 스터디방 접속 해제 알림

기능 이슈

Description

스터디방에 들어오거나 나갈 경우 room 서버에 이를 알림


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 데이터 전송을 위한 TCP Client 설정
  • 스터디방 In/Out 시 userId 와 in/out 여부 room 서버에 전송

[Feat] 룸서버 - 경고 ,강퇴, 방장위임시 TCP 보내기

기능 이슈

Description

클라이언트가 경고, 강퇴, 방장위임 API 호출시, 상태관리서버로 관련해서 TCP 데이터를 보내줍니다.


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 상태관리 서버로 TCP를 보내기 위한 TCPClient 설정
  • 경고, 강퇴, 방장위임 api 호출시 , 상태관리서버로 TCP 보내기 구현
  • 상태관리서버로부터 roomOut TCP 요청을 받았을 때, 유저가 방장인지 아닌지에 대한 응답 구현

[Feat] 채팅 서버 - jwt 토큰 활용

기능 이슈

Description

채팅 서버에서 jwt 토큰의 데이터를 활용하여 채팅 로직(누가 채팅을 보내는지, 받는 지, 접속 상태 관리... )을 수행함


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 채팅 전송 시, jwt 토큰의 채팅 메시지와 userId 정보를 함께 채팅방에 보냄
  • 접속 상태 저장 시, jwt 토큰을 통해 userId를 상태관리 서버에 웹소켓세션과 함께 보냄

[Feat] 스터디 방 관리 서버 Exception Handler 개발

Feat

Description

스터디 방 관리 서버에서 Exception을 던졌을 때 받아서 처리해줄 Exception Handler 개발


To-do

Exception Handler 관련 개발

  • 발생할 Exception 관련 status. errorCode, description을 정의해둘 ErrorCode enum class 개발
  • Exception 발생시 throw 하기위한 ApplicationException 개발
  • throw된 모든 Exception을 받아서 처리 해줄 GlobalControllerAdvice 개발

[BUG] 채팅서버 - 소켓 연결 및 카프카 에러

버그 리포트

소켓 연결 및 카프카 에러

SockJs 소켓 연결 시 정상적으로 수행되지 않음. 로그도 발생 X
Kafka Consumer가 정상적으로 동작하지 않고 에러 로그 발생



어떤 상황에서 겪으셨나요?

jxy.me 소켓 (+ stomp) 테스트 사이트에서 연결 테스트가 정상적으로 동작하지 않음.
또한, 서버에도 로그가 발생하지 않음.



[Fix] 채팅서버 - 접속 상태 관리 로직 수정

기능 이슈

Description

접속 상태 관리 로직 수정


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 채팅서버 - CONNECT , SUBSCRIBE할 떄 DISCONNECT 가 바로 호출 되는 문제 해결
  • 채팅서버 - CONNECT는 로직에서 삭제
  • 채팅서버 - SUBSCRIBE : 접속, DISCONNECT 또는 UNSUBSCRIBE : 접속 해제
  • 채팅서버 - 접속 해제 시에는 roomId 는 "" 로 보냄.
  • 상태관리서버 - 채팅 서버 변경 사항에 따라 로직 수정

[Feat] 스터디방 삭제/수정 기능

Feat

Description

공개 스터디방 삭제/수정 기능 구현


To-do

삭제/수정 기능 관련

  • 공개 스터디방 삭제 기능 Controller, Service에 추가
  • 공개 스터디방 수정 기능 Controller, Service에 추가

[Feat] 채팅 서버 - 상태관리 서버 gRPC 구현

기능 이슈

Description

채팅 서버, 상태관리 서버 간 통신을 gRPC로 재구성


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 상태관리 서버 gRPC 함수 구현
  • 채팅 서버 gRPC 함수 구현
  • protobuf 파일 구현 (chat.proto)

참고자료 및 기타

참고자료가 있다면 첨부해주세요
향 후 구현 예정

  1. TCP VS gRPC 성능 평가
  2. gRPC 예외처리
  3. 네트워크 이용률 모니터링

[BUG] 상태관리서버 TCP요청에 대해 응답 시 바이트 형태로 반환

버그 리포트

어떤 버그인가요?

상태관리서버에서 TCP 요청을 받고, 처리 후 응답 시 String 타입으로 리턴함에도, 바이트 형태로 반환됨.



어떤 상황에서 겪으셨나요?

채팅 서버, 시그널링 서버에서 TCP 메시지를 보낸 것에 대한 응답 메시지가 바이트 형태로 리턴됨.



참고할만한 자료가 있을까요?

  • 상태관리 서버(TCP 서버)
    스크린샷 2023-06-05 오후 11 35 57

  • 채팅서버 (TCP 클라이언트)
    스크린샷 2023-06-05 오후 11 36 22



[Feat] 스터디 그룹 관련 기능 구현

Feat

Description

스터디 그룹에 필요한 모든 기능 구현


To-do

  • 스터디 그룹 생성, 수정, 공지사항 설정 기능 구현
  • 스터디 그룹의 roomCode 생성과 가입, 삭제/탈퇴, 입장 기능 구현
  • 스터디 그룹의 경고, 강퇴, 방장위임 기능 구현

[BUG] 채팅 서버 - STOMP 연결 안되는 에러

버그 리포트

STOMP로 소켓 연결 불가

채팅 서버에 소켓 연결은 가능하나 STOMP로 연결되지 않아 subscribe가 되지 않음.



소켓 테스트 사이트에서 STOMP 연결이 됐었으나, 현재 되지 않음.

소켓 테스트 사이트
아마 CustomWebSocketHandler로 인해 STOMP로 정상동작 하지 않는 것으로 추측
Intercept를 통해 세션을 관리하는 방향으로 수정할 예정



[Feat] 상태관리서버 - Signaling 서버에서 전달받은 실시간 정보 저장

기능 이슈

Description

Signaling 서버에서 전달받은 실시간 정보 저장


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 실시간 정보 데이터 구조 디자인
  • 전달 받는 방식에서 어디 서버에서 왔는 지를 확인하도록 반영
  • Redis에 JSON 저장하도록 구현
  • 통합 : 시그널링 서버에서 전달받은 실시간 정보를 Redis에 JSON형태로 저장하도록 구현

[Feat] 스터디 그룹 별 채팅

Feat

Description

그룹별 채팅 구현



To-do

path variable {roomId}에 따라 구독하도록 구현

  • roomId별로 Kafka - Producer의 send함수 구현
  • roomId별로 Kafka - Consumer의 cousume함수 구현



참고자료 및 기타

Producer에 send 할 때 roomId를 따로 입력하지 않아도 메시지 큐에서 consumer가 꺼내갈 때 구독한 roomId별로 소비되는 지 확인 필요



[Feat] 스터디 그룹 리스트 API

Feat

Description

-user가 속한 스터디 그룹 응답하는 api 구현


To-do

  • user 마다 본인이 속한 스터디 그룹의 roomName과 roomID를 응답해주는 api 구현
  • 관련 controller,service,respository 수정

[Feat] JPA Entity 생성 및 공개 스터디방 생성 기능 개발

Feat

Description

공개 스터디방을 생성해서 DB에 저장 될 수 있도록 JPA Entity를 생성하고 공개 스터디방 생성 기능을 개발


To-do

전체적인 각 할일 분배에 대해 설명해주세요

  • 공개 스터디 방 관련 JPA Entity 개발
  • 스터디 방 생성 기능 관련 Controller, Service, Repository 개발
  • 스터디 방 생성 API의 Request, Response 개발

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.