항해99/개발일지

20220301 개발일지 #webRTC!!??

paran21 2022. 3. 3. 21:39

큰 이슈가 있었다.

우리가 구현하고자 하는 서비스는 최대 4명까지 보이스 채팅이 가능한 게임방을 만드는 것인데 spring으로 구현한 signalling 서버로는 1:1 P2P 연결만 구현할 수 있었다. 

P2P로 다중 연결도 가능은 하나 서버에 부하가 올 수 있고, 무엇보다 참고자료를 거의 찾을 수 없었다.

spring으로 WebRTC를 구현한 케이스도 몇 개 없었는데 구글에 검색했을 때 뜨는 게 없었다.

 

그래서 몇 가지 안을 놓고 팀 안에서도 회의를 하고, 매니저님께도 의견을 구했다.

기능을 구현하지 못해 서비스를 축소하거나 다른 서비스를 도입하는 것은 프로젝트라는 측면에서 좋은 선택지는 아니라고 생각했고, spring으로 구현하는 것은 자료가 거의 없어서 난이도가 너무 높았다.

마지막으로 고민한 건 node로 socket.io를 사용하는 것과 spring으로 WebRTC를 제외하고 websocket만 이용해서 채팅창을 구현하는 것이었다.

  1. 보이스 2명만 대상으로 한다.
  2. MCU나 SFU를 할 수 있는 다른 서비스를 도입한다.
  3. node의 socket.io로 웹소켓 서버를 별도로 구축한다.
  4. spring P2P방식으로 여러 명이 할 수 있도록 구현한다. (자료가 없어요....)
  5. 실시간 채팅만 구현한다(다중 가능).

다른 spring 조들의 경우 한조만 나중에 WebRTC를 고려하고 있었고, node의 경우에도 WebRTC없이 webSocket만 사용할 예정이었다.

 

결국 node로 socket.io를 시도해보고 안되면 실시간 채팅 등 다른 방법을 시도해보기로 했다.

node를 해본 사람은 없지만 socket.io의 경우 참고자료가 많아서 spring으로 시도하는 것보다는 나을거라고 생각했다.

개인적으로도 해보고 싶었고, 다른 팀원분도 해보고 싶어하시는 것 같아서 큰 부담은 없었다.

 

보이스 채팅부분만 socket.io로 구현해도 별도로 서버를 만들고, 그외 나머지 로직은 spring으로 그대로 진행한 뒤에

프론트에서 2개의 서버를 각각 연결하는 것으로 정했다.

node를 사용하는 것은 위험부담이 있는 만큼 우선 노마드코더에 있는 줌 클론코딩으로 공부하고 이 코드를 서버에 올려서 프론트와 붙여보기로 했다.

 

새로운 걸 시작하는 게 걱정도 되지만 socket.io를 써보고 싶어서 재미있는 경험이 될 것 같다.