Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat #54 이미지 추가해서 반환 #54

Open
wants to merge 5 commits into
base: dev
Choose a base branch
from

Conversation

hyxklee
Copy link
Member

@hyxklee hyxklee commented Jan 28, 2025

📌 관련 이슈

관련 이슈 번호 #47
Close #

🚀 작업 내용

  • 채팅 조회, 실시간 채팅시 프로필 이미지를 함께 보내도록 수정했습니다.
  • 실시간 채팅에 매번 멤버 조회를 해서 프로필 이미지를 보여주는 것은 성능이 아쉬울 거라 판단해 redis에 함께 저장해 읽음 처리와 같이 사용하도록 했습니다.
  • 그리고 해당 채팅방에 참여한 인원을 조회할 수 있는 API를 구현했습니다. 프론트엔드 측에서 원하는 시점에 조회할 수 있도록 했습니다.

📸 스크린샷

📢 리뷰 요구사항

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성

@hyxklee hyxklee self-assigned this Jan 28, 2025
@hyxklee hyxklee added the 🔨 Refactor 코드 리팩토링 label Jan 28, 2025
@hyxklee hyxklee linked an issue Jan 28, 2025 that may be closed by this pull request
@hyxklee hyxklee added the ✨ Feature 기능 개발 및 요구사항 변경 반영 label Jan 28, 2025
@hyxklee hyxklee changed the title Feat/#47/이미지 추가해서 반환 Feat #54 이미지 추가해서 반환 Jan 28, 2025
Copy link
Collaborator

@soyesenna soyesenna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨어요!!
로직에 문제는 없어보입니당~~

String key = getKey(roomId);

chatRoomRedisTemplate.opsForSet().add(key, senderId);
chatRoomRedisTemplate.opsForHash().put(key, String.valueOf(senderId), profilePicture);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

사진도 함께 저장하는군요!!
좋은 방식인 것 같습니다!!

}

return size;
return profileImageUrl.toString();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

return profileImageUrl == null ? null : profileImageUrl.toString()
위의 코드로 바꾸는건 어떻게 생각하시나요??
개인적으로 로직이 조금 더 한 눈에 보이는 것 같습니당!!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optional을 이용해서 아래와같이 수정해봤는데 이건 어떠세용??

return Optional.ofNullable(chatRoomRedisTemplate.opsForHash().get(key, String.valueOf(senderId)))
                .map(Object::toString)
                .orElse(null);

Copy link
Member

@huncozyboy huncozyboy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 !

구독 처리를 preSend에서 postSend로 옮겨주면서,
입장 및 읽음 이벤트가 구독 처리 이후에 발생하도록 한 부분이 적절하게 수정된거같습니당

String key = getKey(roomId);

chatRoomRedisTemplate.opsForSet().add(key, senderId);
chatRoomRedisTemplate.opsForHash().put(key, String.valueOf(senderId), profilePicture);
Copy link
Member

@huncozyboy huncozyboy Jan 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

기존 opsForSet을 활용하여 사용자 정보를 저장하던 방식을 opsForHash를 사용해서 사용자의 프로필 사진을 함께 저장하는 로직으로 변경된걸 확인했습니다 !
동시에 opsForHash를 사용할 경우에 관련 데이터가 삭제될때((매칭 종료 이후나 사용자에 의해 채팅방 퇴장), 올바르게 삭제 로직이 이루어지는지 테스트가 필요해보입니다

Copy link
Member Author

@hyxklee hyxklee Jan 31, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이벤트 리스너를 구현을 해서, 웹소켓 구독 해제시 데이터가 제거 되도록 구현했고, 테스트도 완료했습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ Feature 기능 개발 및 요구사항 변경 반영 🔨 Refactor 코드 리팩토링
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feat]: #47 채팅시 프로필 이미지를 포함해서 전송
3 participants