[실전프로젝트] Zzz...꿈깨 | Trouble Shooting!(WebRTC, Socket.io)

2022. 4. 13. 03:06프로젝트

반응형

<WebRTC 서버 구축 문제>

 

 P2P(signalling server) vs MCU/SFU

 4명까지 보이스 채팅이 가능한 환경을 만들기 위해 어떤 서버를 사용해야 하는가?

--->  signalling server를 구축하자!

 

📑 오디오만 사용하고, 4명까지만 연결하기 때문에 signalling server로도 client 부담이 크지 않을 거라고 생각했고, MCU, SFU는 프로젝트 기한 내에 구현하기 어려울 것으로 판단했다.

 

 Springboot vs NodeJS

 다대다 WebRTC를 위한 signalling server를 어떻게 구현할 것인가?

--->  NodeJS의 Socket.io를 사용하여 signalling server를 구현하자!

 

📑 Springboot를 사용하면 하나의 서버만 관리하면 되고, 팀원들 모두가 익숙한 프레임워크를 사용할 수 있다.

그러나 참고자료가 많지 않다.

📑 NodeJS를 사용하면 Socket.io 라이브러리를 사용해서 비교적 쉽게 구현이 가능하나,

서버를 2개 관리해야 되기 때문에 유지관리에 비용이 더 소모되고, 익숙하지 않은 언어와 프레임워크를 사용해야 한다.

📑 Springboot로 signalling server를 구축하면 시간이 더 오래 걸릴 것으로 예상했고,

제한된 시간 안에 서비스의 완성도를 높이기 위해서는 NodeJS의 Socket.io를 사용하는 것이 더 적합하다고 판단!


<게임 플레이 중 동시성 제어 문제>

 

 문제상황

📑 게임 중 맞춘 문제 수(스코어), 찬스가 변경될 경우 해당 방 Client 모두에게 해당 정보를 업데이트해주어야 함

 

 Socket.io의 이벤트를 활용해서 스코어나 찬스 변경 이벤트 발생 시 해당 방에 데이터 변경 사실 알려주자!

📑 HTTP 통신에서는 Client 요청 없이 Server가 Response 할 수 없으므로 socket 통신을 이용하면 해결할 수 있음!

📑 퀴즈를 동시에 보고 있을 때도 한 명이 문제를 풀면 이벤트를 활용해 이미 푼 문제로 변경

 

반응형