-
Notifications
You must be signed in to change notification settings - Fork 1
12월 01일
top-chaser edited this page Dec 13, 2023
·
3 revisions
- 기술적으로 성장하는 것이 목표
- 트위치, 아프리카와 같은 실시간 방송 스트리밍 서비스 입니다!
- 실제 여러 bj나 스트리머의 방송을 많이 보고 접하는데 과연 이런 플랫폼은 어떻게 이루어져 있을까? 라는 생각을 하게 되었고,
- 실제로 스트리밍 관련 기술이 어렵다고 알고 있고 이번에 전부 처음 경험하는 것이다 보니 기술적인 성장을 이룰 수 있을 것 같아서 주제를 선택했습니다!
- 로그인에 시간을 많이 뺏기지 않기 위해서 oAuth를 활용한 네이버 간편 로그인을 활용하기로 함
- 나머지는 쉽게 되었지만 로그인을 한 클라이언트에 쿠키가 남지 않는 오류 발생
- 저번 주에 프론트 분이 구현해준 Exress.js + Socket.io 대신
- NestJS + Socket.io + Redis-adapter를 사용해 채팅 서버 구현
- 서버에서 chat을 받으면 같은 room에 있는 socket에게 특정 형식을 가진 메시지를 보냄
- 클라이언트에서는 useRef를 통해 socket을 한 번만 선언 하게함
- 채팅을 보내는 버튼이나 엔터를 클릭하게 되면, 서버에게 메시지를 담아 chat을 보냄
- useEffect를 통해 선언한 socket에 정보를 주입하고 join을 통해 room에 참가시킴 또한, 서버로 부터 chat이 오면 현재 보여지고 있는 채팅리스트에 받은 chat을 추가해 보여줄 수 있도줌
- 프론트 도메인 배포 후 https로 인증
- letsencrypyt 사용해서 도메인에 대한 무료 인증서 발급
- 서버에 미리 인증서를 추가해놓은 후 github action의 script로 nginx 도커 안으로 복사 후 재시작
docker cp /etc/letsencrypt/archive/gbs-live.site/fullchain1.pem front:/
docker cp /etc/letsencrypt/archive/gbs-live.site/privkey1.pem front:/
docker cp default.conf front:/etc/nginx/conf.d/
docker exec front nginx -s reload
sudo letsencrypt certonly --standalone -d [도메인 입력]
- 방송 서비스이기 때문에 사람이 얼마나 들어와도 버틸 수 있는지를 측정해야 한다고 생각 → 추후 성능 분석에 활용할 nGrinder 세팅