저희 서비스는 기본적으로 라이브 방송에서만 채팅을 제공하고, 다시보기에서는 채팅을 제공하지 않고 있습니다. 추후 다시보기에 질문을 남겨놓을 수 있는 기능에 대해서 생각해보고 있지만, 다시보기에 라이브 채팅이 들어가지는 않을 것 같습니다.
따라서 현재로서는 오프라인 유저에게 채팅을 보낸다는 등의 비실시간 채팅에 대해서는 고려하지 않아도 되는 채팅 서버입니다.
또한 방송이 꺼지게 되면 해당 채팅은 종료가 됩니다. 유저들이 한 번 채팅에 접속하고 나서 해당 채팅방이 무기한으로 유지되는 카카오톡과 같은 채팅 서비스와는 달리, 유저가 처음 저희 서비스에 접속했을 때는 그 어떠한 방에도 참여하지 않은 상태에서 서비스를 사용하게 됩니다.
채팅을 구현하면서 사용할 수 있는 방법으로 대략 2가지 정도 생각을 했습니다.
초기의 채팅 서버 설계는 굉장히 직관적인 설계를 가졌습니다.
초기 채팅 서버 설계
socket.io 와 nest.js 를 활용해서 채팅 서버를 작성했고, 1대의 채팅 서버가 유저의 모든 메세지 이벤트를 받아, 같은 방에 있는 모든 클라이언트에게 메세지 이벤트를 emit 하는 구조였습니다.