[project] 마이크,카메라 비사용자 게임로직 오류수정

😎·2023년 1월 23일
0

PROJECT

목록 보기
18/26
post-thumbnail

설날 잘 보내고 오늘부터 다시 프로젝트 작업을 시작 했습니다!!

저번 중간발표까지 카메라,마이크 비사용자가 게임방에 참가는 되었으나 게임을 시작하면 접속이 끊어지는 오류가 있었는데요! 해당 오류는 try catch 문을 사용하여 간단하게 해결할 수 있었습니다 😊😊

 case 'START': {
          try {
            stream.getAudioTracks().forEach((track) => {
              track.enabled = false;
            });
          } catch (erorr) {
            console.log(erorr);
          }
          setIsStartModal(true);
          setCategory(data.content.category);
          setKeyword(data.content.keyword);
          setMyKeyword('???');
          if (myNickName === owner) {
            startBtn.current.disabled = true;
            leaveBtn.current.disabled = true;
          } else {
            leaveBtn.current.disabled = true;
          }
          break;
        }

🔧 try catch 문을 사용하여 미디어 비사용자 또한 접속이 끊어지지 않게 코드를 추가하였습니다

 case 'SPOTLIGHT': {
         setNotice(data.content);
         if (myNickName === data.sender) {
           try {
             stream.getAudioTracks().forEach((track) => {
               track.enabled = true;
             });
           } catch (e) {
             console.log(e);
           }
           muteBtn.current.style.display = 'block';
           setIsVoiceOn(true);
           setIsSpotTimer(true);
           setIsMyTurn(true);
         } else {
           try {
             stream.getAudioTracks().forEach((track) => {
               track.enabled = false;
             });
           } catch (e) {
             console.log(e);
           }
           setIsVoiceOn(false);
           setIsTimer(true);
           muteBtn.current.style.display = 'none';
           setIsMyTurn(false);
           setUsers((users) =>
             users.map((user) =>
               user.nickName === data.sender
                 ? { ...user, isMyTurn: true }
                 : { ...user, isMyTurn: false },
             ),
           );
         }
         break;
       }

🔧 START case와 마찬가지로 유저의 마이크와 비디오를 조작하는 코드에서 try catch문을 사용하여 접속 끊김을 방지 하였습니다!

 case 'ENDGAME': {
          muteBtn.current.style.display = 'block';
          leaveBtn.current.disabled = false;
          setNotice('');
          setCategory('');
          setKeyword('');
          setMyKeyword('');
          try {
            stream.getAudioTracks().forEach((track) => {
              track.enabled = true;
            });
          } catch (e) {
            console.log(e);
          }
          setIsVoiceOn(true);
          setUsers((users) =>
            users.map((user) => {
              return { ...user, isMyTurn: false };
            }),
          );
          setIsMyTurn(false);

          if (myNickName === owner) {
            startBtn.current.disabled = false;
          }

          break;
        }

🔧 마지막으로 게임을 끝내는 ENDGAME case 입니다 동일하게 try catch문을 사용해 주었습니다 👍

profile
개발 블로그

0개의 댓글