42Seoul-LastDance / Backend

2 stars 0 forks source link

[Feature] 친구 status 실시간 업데이트 방식 #28

Closed ebang091 closed 1 year ago

ebang091 commented 1 year ago

요약



내용

restapi - friends/getFriendList 에서 {friendName, friendStatus}[] list를 반환받을 수 있습니다!

참고자료



Tolerblanc commented 1 year ago

@SikPang @JaeJunday 친구들의 Status도 채팅방 목록처럼 실시간으로 업데이트 시켜주려면, 상태가 변할 때마다 이벤트를 발생시켜서 통신하도록 구현해야 할 것 같습니다. 혹시 구현하실 생각 있으시면 관련하여 어떻게 처리할 지 같이 이야기 해보면 좋을 것 같아요. 다른 namespace끼리 이벤트를 주고 받을 수 있는지 실험을 안해봐서, 어떻게 동작할 지는 모르겠습니다. 친구 목록에 새로고침 버튼을 달고, 그때마다 RestAPI를 호출하여 업데이트하는 방법도 있습니다. 이 경우, 이미 구현되어 있으니 노션 참조하시면 될 것 같습니다.

SikPang commented 1 year ago

저번에 주현누나랑 이야기했을 때 처음 친구 리스트 및 상태는 api로 받아오고, 친구가 로그아웃을 하면 그 친구의 모든 친구에게 소켓 이벤트를 날려 리스트를 재랜더링하는 방식으로 하기로 했는데 주현누나랑 이야기해 보셨나요?

Tolerblanc commented 1 year ago

다른 namespace끼리 이벤트를 주고 받을 수 있는지 실험을 안해봐서, 어떻게 동작할 지는 모르겠습니다.

이따 이 부분 실험해보고, 결과에 맞춰서 어떻게 구현할 지 논의해보겠습니다!

OZestina commented 1 year ago

네 어제 소켓 이벤트 날려서 바로 업데이트 하는 걸로 광식님과 얘기한 바 있어서 어제 백 미팅에서도 공유한 상태입니다 다만 해당 내용은 게임소켓에서의 내용이 다른 소켓(DM)으로 연결이 필요하고 이 부분이 구현 가능한지 확인이 필요해서 우선 구현할 수 있는 쉬운 방법인 새로고침을 공유한거고, 어떤 방향으로 진행할지는 프론트와 협의가 필요하다는 점 모두 인지하고 있습니다

Tolerblanc commented 1 year ago

위 커밋에서 수정된 사항

-> 차주 추가 테스트 후 이슈 닫겠습니다!

Tolerblanc commented 1 year ago

@ebang091 ++ 지금 로직은 RestAPI를 통해 친구 추가/제거 시 인메모리 Map을 업데이트 안해주고 있는데, 이 부분은 어떻게 할까요?? 어차피 친구 리스트는 매번 DB에서 끌어오고 있어서, 인메모리 Map을 별로 활용 안하는 것 같습니다.

  1. friendList Map을 없앤다.
  2. 혹시나 쓰일 지 모르니, friendList 업데이트 로직을 구현한다.
OZestina commented 1 year ago

게임 부분은 게임socket 연결됐을 때 (status: game), 게임 socket 끊겼을 때 (dm socket 살아있는지 여부에 따라 status: online || offline) 유저의 스테이터스가 변경되었다는 이벤트를 친구들에게 보내도록 수정 및 테스트 완료했습니다 (금요일 밤 기준)

저는 어떤 방향이든 모두 좋습니다만, friendList와 blockUserList가 비슷한 목적으로 만들어졌으니 둘의 방향성이 같았으면 좋겠습니당