sparcs-kaist / araplus

2015 ARA Project
MIT License
6 stars 5 forks source link

(session/message) Group Messaging #25

Open mightydeveloper opened 9 years ago

mightydeveloper commented 9 years ago
  1. 단체 메시지 (DB 구조 논의 필요) 구현하기.

단체 메시지 기능의 경우 DB의 스키마를 바꿔야 합니다. 세가지 구현방법이 있을것 같습니다.

  1. 기존 Message 모델은 그대로 두고 n개의 Message를 파서 receiver만 바꾸어 주기.
  2. Message모델에서 receiver를 multiple value 로 설정.
  3. Group이라는 모델을 새로 만들기.

창원이형의 조언으로 3번을 이용해서 구현 할 예정입니다.

leeopop commented 9 years ago
  1. 으로 하려면 1:1 채팅도 2명짜리 그룹으로 구현하는편이 추상화 측면에서 더 나을거에요.

만약에 그룹에 멤버 추가 제거를 고려한다면 그룹에 추가된 사용자들의 정보에 '이 그룹의 몇 번째 메시지부터 읽을 권한이 있다' 라는 필드를 추가해야 할 거에요. 그래야 나중에 추가된 그룹 사용자가 이전 메시지를 못 읽겠죠?

leeopop commented 9 years ago

수 년 전에 만든거라 도움이 될지는 모르겠지만 한번 참고해보시면 DB설계에 도움이 될까 해서 남겨봅니다.

https://github.com/leeopop/Talaria/blob/master/resources/scheme.mwb

Shavakan commented 9 years ago

@leeopop 뭔가 약간 카톡과 슬랙의 중간지점 같은 느낌이랄까... 동일한 사용자 (혹은 그룹) 간의 메시지를 스레드 형식으로 보여줄 예정이라 3. 으로 구현하는게 가장 적합할 것이라고 생각하였습니다 그런데 Group을 어떻게 쿼리해야할지 당장 머리속에 안떠오르네요 음......

mightydeveloper commented 9 years ago

코드를 짜다가 몇가지 의문점이 생겼는데요, 일딴 첫번째로, 유저가 어떻게 그룹들을 입력하느냐가 궁금하네요. 그러니까, 유저가 한 필드 안에 닉네임을 comma separated로 넣어서 그룹을 만들어주는걸로 할지, 아니면 아예 그룹을 만들어주는 웹페이지가 따로 있고 여기서 그룹을 생성한 다음 그 그룹으로 메시지를 보내기로 할지 여러 방식이 있는것 같네요.. 두번째로, "단체 메시지" 랑 그룹 메시지를 구별해야할것 같아요. 약간 첫번재 부분이랑 관련되어있기도 한데, 예를들어 제가 광고나 공지를 n 명에게 그냥 보내고 싶으면, 딱히 그룹을 파면 안되잖아요? 위에 썻던

  1. 기존 Message 모델은 그대로 두고 n개의 Message를 파서 receiver만 바꾸어 주기. 이 방식되로 되어야 받는사람들끼리는 서로 메시징이 불가능해야하고 이메일에서 bcc처럼 서로 누가있는지도 몰라야 하니까 이 방식이 좋을것 같아요..

결론적으로는, 제 생각엔 필드에 닉네임을 comma separated로 넣어서 메시지를 보내면 그냥 광고나 공지를 n명에게 뿌리는걸로 구현을 하고, 만약 그룹메시지를 보내고 싶으면 그룹을 만들어주는 웹페이지를 따로 만들고 그룹을 생성하는게 더 좋을것 같네요. 그래야 나중에 그룹별 private board라던지 파일 공유라던지 등등의 group 기능들이 이 기획에 추가적으로 들어간다면 조금 더 확장되기 쉬울 것 같아요.

일단은 이 방향으로 진행을 하겠습니다.