Skip to content

Commit 31a8d5c

Browse files
authored
Merge pull request #111 from prgrms-web-devcourse-final-project/Refactor/QFEED-161-chatMessage
[QFEED-161] Refactor : chatMessage receiver이 방에 존재하면 읽음 상태로 , 없으면 알림 보내기
2 parents 223f154 + 4a68660 commit 31a8d5c

File tree

2 files changed

+27
-31
lines changed

2 files changed

+27
-31
lines changed

module-api/src/main/resources/static/test1.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
// Subscribe to a topic
2727
stompClient.subscribe('/sub/chat/13', (message) => {
2828
console.log('Received: ' + message.body);
29-
}, { senderId: 'b32e9109-b912-4531-930c-a02b066671a6'});
29+
}, { senderId: '29ae601c-9930-4145-8174-18a466aec50a'});
3030
}, (error) => {
3131
console.error('Error during STOMP connection:', error);
3232
});
@@ -37,7 +37,7 @@
3737
// Send a message to the destination endpoint
3838
const payload = JSON.stringify({
3939
roomId: 13,
40-
senderId: 'b32e9109-b912-4531-930c-a02b066671a6',
40+
senderId: '29ae601c-9930-4145-8174-18a466aec50a',
4141
receiverId:'abac57c8-4039-4c17-91fe-e9114c6c59ff',
4242
message: '로컬 반대!',
4343
type:'IMAGE',

module-application/src/main/java/com/wsws/moduleapplication/chat/service/ChatMessageService.java

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -51,30 +51,27 @@ public void sendMessage(Long chatRoomId, String senderId, String receiverId, Cha
5151

5252
//String fileProcess = processChatImage(request.file());
5353

54-
//boolean receiverInChatRoom = isReceiverInChatRoom(chatRoomId, receiverId);
55-
56-
Boolean isin = true;
54+
boolean receiverInChatRoom = isReceiverInChatRoom(chatRoomId, receiverId);
5755

5856
// 메시지 생성
59-
ChatMessage chatMessage = createChatMessage(chatRoomId, senderId, receiverId, isin ,request);
57+
ChatMessage chatMessage = createChatMessage(chatRoomId, senderId, receiverId, receiverInChatRoom ,request);
6058

6159
//db에 메세지 저장(비동기)
6260
chatPersistenceService.saveMessageInRedisAsync(chatRoomId,chatMessage);
6361

6462
//구독 및 redis 발행
6563
chatWebSocketService.notifyWebSocketSubscribers(chatRoomId, chatMessage, user);
6664

67-
// if(!receiverInChatRoom) {
68-
// //알림보내기
69-
// log.info("상대방이 접속해있지 않습니다. 알림을 보냅니다.");
70-
//
71-
// // 채팅 이벤트 발행
72-
// eventPublisher.publishEvent(new SendMessageEvent(
73-
// senderId,
74-
// receiverId,
75-
// FcmType.CHAT
76-
// ));
77-
// }
65+
if(!receiverInChatRoom) {
66+
log.info("상대방이 접속해있지 않습니다. 알림을 보냅니다.");
67+
68+
// 채팅 이벤트 발행
69+
eventPublisher.publishEvent(new SendMessageEvent(
70+
senderId,
71+
receiverId,
72+
FcmType.CHAT
73+
));
74+
}
7875
}
7976

8077
//채팅방의 메세지 조회
@@ -94,27 +91,26 @@ public void markAllMessagesAsRead(Long chatRoomId) {
9491
chatMessageRepository.markAllMessagesAsRead(chatRoomId);
9592
}
9693

97-
// private boolean isReceiverInChatRoom(Long chatRoomId, String receiverId) {
98-
// try{
99-
// String userCurrentRoom = redisService.getUserCurrentRoom(receiverId);
100-
// log.info("수신자 {}가 현재 채팅방 {}에 존재합니다.",receiverId,chatRoomId);
101-
//
102-
// boolean isInRoom = userCurrentRoom != null && userCurrentRoom.equals(chatRoomId.toString());
103-
// log.info("userCurrentRoom.equals(chatRoomId.toString()): {}", isInRoom);
104-
// return isInRoom;
105-
// } catch (Exception e) {
106-
// throw ChatReceiverNotFoundException.EXCEPTION;
107-
// }
108-
// }
94+
private boolean isReceiverInChatRoom(Long chatRoomId, String receiverId) {
95+
try{
96+
String userCurrentRoom = redisService.getUserCurrentRoom(receiverId);
97+
98+
boolean isInRoom = userCurrentRoom != null && userCurrentRoom.equals(chatRoomId.toString());
99+
log.info("수신자 {}의 채팅방 {}에 존재 여부 : {}",receiverId,chatRoomId,isInRoom);
100+
return isInRoom;
101+
} catch (Exception e) {
102+
throw ChatReceiverNotFoundException.EXCEPTION;
103+
}
104+
}
109105

110106
//메세지 생성
111-
private ChatMessage createChatMessage(Long chatRoomId, String senderId, String receiverId,Boolean isin,ChatMessageRequest request) {
107+
private ChatMessage createChatMessage(Long chatRoomId, String senderId, String receiverId,boolean isReceiverIn,ChatMessageRequest request) {
112108
return ChatMessage.create(
113109
null,
114110
request.content(),
115111
request.type(),
116112
request.file(),
117-
isin,
113+
isReceiverIn,
118114
LocalDateTime.now(),
119115
senderId,
120116
receiverId,

0 commit comments

Comments
 (0)