Skip to content

[🛠️ REFACTOR] 채팅 리졸버 구현 #77

@world-dv

Description

@world-dv

🛠️ 리팩토링 대상

@MessageMapping 메서드

🚀 리팩토링 목적

채팅 금지 기능을 리졸버로 처리함으로써 채팅 기능과 금지 기능을 분리시킬 뿐만 아니라, 중복 코드를 줄이기 위함.

🔄 리팩토링 세부 사항

  • 채팅 금지 기능을 하나의 어노테이션으로 구성해 사용한다.
  • 채팅 메서드 구조를 개선한다.

🔍 관련 코드

@MessageMapping("/bid")
public void handleBid(BidRequest bidRequest) {
     UserDetailResponse userDetailResponse = userService.getUserDetailsById(bidRequest.getUserId());
     if (chatService.isUserOwner(bidRequest.getChatRoomId(), userDetailResponse.getId())) {
          return;
     }
     if (bidService.isBidEnd(bidRequest.getAuctionId())) {
          return;
     }
     BidResponse bidResponse = bidService.submitBid(bidRequest.getUserId(), bidRequest.getAuctionId(), bidRequest.getAmount());
     simpMessageSendingOperations.convertAndSend("/bid/"+bidResponse.getUuid(), bidResponse);
}
@MessageMapping("/chat/message")
public void message(MessageDto messageDto) {
     if (chatService.isUserOwner(messageDto.getRoomId(), messageDto.getSender())) {
          return;
     } //메시지 전송자가 경매자라면 메시지 전송 금지

     chatService.processMessage(messageDto);
     simpMessageSendingOperations.convertAndSend("/topic/chat/room/" + messageDto.getRoomId(), messageDto);
}

@MessageMapping("/chat/message/whisper")
public void messageToOne(WhisperDto whisperDto) {
     if (chatService.isUserOwner(whisperDto.getRoomId(), whisperDto.getSender())) {
          return;
     } //메시지 전송자가 경매자라면 메시지 전송 금지
     String sender = userService.getUserDetailsById(whisperDto.getSender()).getNickName();
     whisperDto.setMessage("[귓속말] " + sender + " : " + whisperDto.getMessage());
     simpMessageSendingOperations.convertAndSend("/whisper/" + whisperDto.getReceiver(), whisperDto);
}

📝 추가 사항

해당 코드들이 잘 동작하는지 테스트가 필요합니다.

Metadata

Metadata

Assignees

Type

No type

Projects

Status

완료

Relationships

None yet

Development

No branches or pull requests

Issue actions