connect-foundation / 2019-02

dropy 🐣 - simple, easy, interactive presentation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

채널 내 방문자 카운트 구현 방식 제안

happydhKim opened this issue · comments

commented

채널 내 방문자 카운트 구현 방식을 정해야 합니다.

  • 채널에 입장하면, 해당되는 채널에 몇명이 접속해 있는지 파악할 수 있어야 하며, 노출되어야 합니다.

이슈 ❗️

사용자를 각 채널별로 파악할 수 있어야 하지만, 해결방안이 마땅하지 않습니다.
현재 고민중이었던 것을 요약 하면,

첫 번째, 소켓을 사용하는 것입니다.

하지만 웹을 접속하는 순간 소켓이 연결되어 핸들링하기가 힘듭니다. 각 채널별로 구분짓고 참여자가 누군지도 알아야 하기 때문입니다.

onConnected 와 onDisconnected 같은 함수를 제공해 주지만, 이것만으로 채널과 유저의 구분이 어렵습니다. 단 하나의 드로피 채널만 입장이 가능하다면, 데이터베이스를 이용하여 구현이 가능합니다. 하지만 여러개의 드로피를 켜 놓는다고 가정을 하면 이 방법으로는 한계가 있다고 생각합니다.

두 번째, 소켓을 사용하지 않는 방식입니다.

입장하는 것은 문제가 없으나 퇴장하는 부분에서 어려움이 있습니다. beforeunload와 같은 이벤트를 했으나 정확한 결과가 안나오는 경우가 발생합니다.

내가 생각한 해결방안🐤

소켓을 사용해야 합니다.

  • 소켓을 사용하지 않는다면, 이벤트 누락과 같은 변수가 생깁니다. 그래서 정확한 결과를 얻기 위해 소켓을 사용해야 합니다.

첫 번째 방법. 모든 소켓이 접속하고 끊어질 때마다 풀링으로 확인하는 방식입니다. 제너레이터 같은 것을 이용해 항시 확인을 해보는 방법입니다. 하지만 비용이 크다고 생각합니다. 왜냐하면 드로피에 접속하는 모든 사람을 확인해야 하니까요!🤭

두 번째 방법. 확인을 더 해봐야 하지만, 구독을 이용해보고 싶습니다. 채널에 있는 모든 사용자가 구독을 하는 채팅이 있습니다. 이걸 조금 더 고민해보면 답이 나오지 않을까 합니다.


## 더 좋은 방법이 있는지 궁금합니다. 그리고 결단이 필요합니다.

아직 제가 이 문제를 언제 끝날지 모르는 상황입니다. 그래서 두 번째 방법을 해결하면 최선이겠지만, 최악의 경우 첫 번째 방법으로 대체를 해둬야 할지 궁금합니다.

관련된 이슈 📎

  • [Epic#30] 채널에 참여인원이 몇명인지 확인할 수 있다. (#81)

레퍼런스 📚

레퍼런스 없음

commented

소켓으로 해결