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

[Chat] 채팅방에 Event가 일어났을 때 해당 채팅방을 구독하는 사용자들에게 보내기 #284

Merged
merged 3 commits into from
Nov 10, 2024

Conversation

minisundev
Copy link
Member

#️⃣연관된 이슈

close #278

📝작업 내용

  • 채팅방 나가기를 한 유저에게 메시지가 전송되지 않도록 인터셉터의 preSend 메서드에서 메시지 송수신시 권한 확인을 하는 로직을 추가했습니다.
  • 기존 인터셉터 코드가 한 메서드 안에 너무 길게 작성되어 있어 메서드를 분리해 코드를 정리했습니다.

@minisundev minisundev added enhancement 추가 기능 Chat 채팅 관련 기능 labels Nov 10, 2024
@minisundev minisundev requested a review from a team November 10, 2024 10:33
@minisundev minisundev self-assigned this Nov 10, 2024
@minisundev minisundev changed the title Feat/chatroom unsubscribe [Chat] 채팅방에 Event가 일어났을 때 해당 채팅방을 구독하는 사용자들에게 보내기 Nov 10, 2024
@minisundev minisundev merged commit f913714 into kSideProject:dev Nov 10, 2024
1 check passed
@@ -22,6 +22,7 @@ class ChatController(
private val authClient: AuthClient,
private val serverClient: ServerClient,
) {
@Deprecated("WebSocketChatController를 대신 사용")
Copy link
Contributor

Choose a reason for hiding this comment

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

해당 annotation은 어떤 역할을 하는 건가요?!

Copy link
Member Author

Choose a reason for hiding this comment

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

@deprecated 어노테이션은 이 메서드가 더 이상 사용되지 않음을 명확히 하기 위한 표시입니다! WebSocketChatController가 동일한 기능을 대체하고 있지만, 이 메서드가 구현된 로직을 보존해둔 이유는 기존 구현을 참고해야 할 경우도 있고, 특정 케이스가 예상대로 동작하지 않을 때 비교 자료로 쓰기 위해서 입니다! 주석을 통해 대체된 위치를 명시했기 때문에 혼동 없이 코드 유지와 개선에 도움이 될 것이라 판단했습니다!

else -> message
}
}
}
}

private fun handleConnectMessage(message: Message<*>): Message<*> {
private fun authenticateAndSetPrincipal(message: Message<*>): Message<*> {
Copy link
Contributor

Choose a reason for hiding this comment

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

해당 메서드에서 변경된 내용이 없는 것 같은데 메서드명을 변경하신 이유가 있는지 궁금합니다!

Copy link
Member Author

Choose a reason for hiding this comment

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

원래 STOMP 메시지 타입이 CONNECT일 때는 유저 정보를 세션에 저장하고
SUBSCRIBE일 때는 유저가 해당 채팅방/서버에 권한이 있는지 확인하는 과정을 거쳤기 때문에 메서드명을 handleConnectMessage, handleSubscribeMessage로 했었습니다!

하지만 STOMP 메시지 타입이 MESSAGE일 때에도 권한이 있는지 확인해서 handleSubscribeMessage를 사용하게 되어 handleSubscribe의 메서드 명을 범용적으로 변경하는 과정에서 STOMP 메시지 타입으로 분류했던 메서드(handleConenctMessage, handleSubscribeMessage) 명을 모두 수정하게 되었습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Chat 채팅 관련 기능 enhancement 추가 기능
Projects
None yet
Development

Successfully merging this pull request may close these issues.

채팅방 나가기 요청을 했을때 해당 채팅방 Subscribe 해제하기
2 participants