구현 설명

게임 내 상태에 따른 오픈비두 연결

게임에서 교실 배경으로 들어가면 GAME 세션에 접속, 에디터에 들어가면 에디터 주인의 name값을 id로 한 각각의 개인 세션에 접속하는 시스템

⇒ Redux toolkit을 사용하여 game status와 에디터 주인 이름 등 value를 전역변수로 저장하고, 해당 변수값이 변경될 때마다 오픈비두 세션 접속 및 나가기 기능이 작동되도록 연결

remote mute 기능

오픈비두에서 에디터에 들어갔을 때, 에디터의 주인은 게스트들의 마이크/헤드셋을 임의로 음소거할 수 있게끔 구현 ⇒ Openvidu에서 제공하는 signal을 이용

각 게스트들의 뮤트 아이콘을 클릭하면 현재 변경되어야 하는 mute state와 대상 user를 data에 담아 전체 게스트들에게 signal을 전송하고, 시그널을 받은 게스트들 중 본인의 user와 일치하는 유저는 음소거 함수를 호출하여 mute가 되도록 구현

트러블 슈팅? (기술적 챌린지)

  1. 오픈비두 deployment 서버 연결이 안 되는 이슈…

    ⇒ nginx 를 통해 어떻게 저쩧게 해줬더니 됨…

  2. 유저 리스트에 음소거 여부 연동하기

마이크 음소거, 헤드셋 음소거를 누를 때마다 음소거 처리 로직을 수행하고, 오픈비두의 Session에 연결되어 있는 모든 유저에게 OO 유저가 음소거를 했다는 사실을 signal 이벤트를 통해 알림

해당 음소거 signal을 받은 다른 유저들은 해당 유저의 음소거 여부를 리덕스 데이터에 저장.

에디터나 교실 배경 화면에서 유저리스트를 가져올 때, 해당 데이터를 통해서 음소거 여부를 알아옴

+새 유저가 들어왔을 때에도 기존 유저의 음소거 정보를 가져오도록 하기 위해, 서버 단에서 음소거 status를 저장할 필요성

⇒ 마이크 뮤트 정보, 볼륨 뮤트 정보를 나타내는 각각의 싱글톤 객체를 생성해서 음소거를 할 때마다 해당 객체 내의 값을 변경하도록 구현, 새 유저는 redux에 저장된 user list의 초기값으로 해당 값을 받도록