-
Notifications
You must be signed in to change notification settings - Fork 2
11 20 데일리 스크럼
Seungheon Han edited this page Nov 22, 2024
·
1 revision
📌
- 백엔드에서 이벤트 만들어줘야함
- 화질 조정하는게 테스트가 필요하다
- default를 auto → bitrate 자동으로 정해짐 min, max만 설정해뒀기 때문
- 그다음에 사용자가 360, 480, 720에서 선택 → 이벤트 발생,
- 그러면 이제 서버에서 consumer의 bitrate 화질에 맞게 고정시켜버림
- 서버로 이벤트 발생
- (체크인) 방송 생성될때 → 채팅방 생성 이벤트 발생 (소켓 2개)
- 시청페이지 입장할때 → 채팅방 입장 이벤트 발생 (소켓 2개)
- 시청 그만둘때 (창끌때 등등) → 채팅방 떠나기 이벤트 발생
- 방송 그만둘때 → 채팅방 삭제 이벤트 발생
- 채팅치면 → 채팅 이벤트 발생 → 방안의 모든 유저에게 챗 전송
- 모든 유저는 socket.on으로 채팅 들을 준비 해야함 → 채팅이 들어오면 상태 업데이트 → 컴포넌트 리렌더링해서 화면에 보여짐
- 30초에 한번씩 썸네일 변경? (데모에서는 10초)
- 데이터베이스 object storage에 업로드한 url을 저장
- 녹화는 아직 생각 안함
썸네일과 채팅
방송을 시작하면 방송 리스트가 보이고, 거기에 썸네일까지
방송 입장하면 채팅 가능
-
다른사람은 잘 되는데 희선의 방송창은 방송이 잘 켜지고 시청이 됨에도 불구하고 에러 화면이 보임
→ 개인 이슈?
→ 한번 확인
-
방송설정창을 체크아웃이 아닌 바로 닫기를 눌렀을때 방송 종료가 안됨
→ 한번 확인
→ 프론트에서 창을 엑스눌러서 발생해야하는 로직이 발생 안함
-
서버측에서 transport가 끊겼을때?
- socket disconnect ⇒ 싸그리정리 (챗서버에도 적용해야할거같음)
- socket이랑 room이랑 1대1로 매칭
- 송출자 room → stopBroadcast 실행 service 로직의 (서버에서실행)
- 수신자 tranport + consumer → leaveBroadcast 실행 service 로직의 (서버에서실행)
- socket이 끊겼을 때 다 처리해버리자
- 이벤트 호출 X, 소켓 끊기면 서버에서 처리
-
방송 리스트 조회
-
방 정보가 존재하지 않을때 서버가 종료되는 이슈
→ 사진에 대한 경로를 데이터베이스에 저장, 직접 제공
-
데이터베이스 썸네일 저장하기
- room 생성 시, 고정 uri 지정
-
Plaintranport
- plaintransport room 닫히면 종료
- 정리잘하자
-
서버측에서 Socket이 끊겼을 때 정리해주는거
- socket이 끊겼을때
- roomId === socketId
- tranposrtId === socketId
-
방 정보가 존재하지 않을때 서버가 종료되는 이슈
- 의도치 않게 종료되는 원인 찾고 해결
-
배포 스크립트 (port mapping) ⇒ 광현
- media: (30000~31000)
- record: (10000 ~ 10300)
- 필요 라이브러리 설치 (ffmpeg)
webRTC랑 Plain이랑 사용하는 포트 범위가 다른데 이걸 그냥 하나로 합쳐도 무방함 (30000~31000)
- MIN_PORT, MAX_PORT 상수 생성
- 채팅 로직 구현
- Mediasoup 포트 매핑 문제
- swagger 같은 응답 코드에 다양한 응답 보여주기
- Sudo가 계속 비밀번호를 요청함
- Docker 이미지가 너무 크다
- Git action에서 도커 이미지 빌드 시간을 단축시켜보자
- Docker compose를 이용해서 메모리 사용률을 줄여보자
- 방송 녹화 시 CPU 과부하 문제를 해결해보자
- Release 브랜치? 너 필요해?
- 로딩이 너무 짧아…!
- NestJS ORM으로 무엇을 사용해야 할까?
- WebRTC를 이용한 1:N 스트리밍 서비스에서 시그널링 서버가 필요할까?
- 실시간 채팅 구현: 인메모리 방식을 선택한 이유
- MySQL 아키텍처 개선: DB 의존성 분리와 서버 역할 명확화
- 브라우저 창이 최소화되면 비디오 송출이 안된다…!
- Mediasoup 기본 개념
- DLTS와 Signaling
- Tell, Don't Ask (TDA) 원칙이란
- VPC(Virtual Private Cloud) 학습 정리
- 순환참조: A 서비스 ‐ B 서비스 vs. A 서비스 ‐ B 레포지토리
- Dto 메서드 전략
- WebRTC란?
- 자바스크립트 패키지 매니저(npm, yarn, pnpm)
- shadcn/ui을 이용해 UI 개발 생산성 높이기
- React 이벤트 핸들러 네이밍(on vs handle)
- React-router-dom의 createBrowserRouter을 사용해보기
- fetch vs axios