From f7f464eb42e5363289e5c976e7e8d5ea3a858517 Mon Sep 17 00:00:00 2001 From: sukangpunch Date: Tue, 1 Apr 2025 00:44:01 +0900 Subject: [PATCH] =?UTF-8?q?sseService=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../goorm/back/zo6/sse/application/SseService.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/goorm/back/zo6/sse/application/SseService.java b/src/main/java/goorm/back/zo6/sse/application/SseService.java index af24504..6425085 100644 --- a/src/main/java/goorm/back/zo6/sse/application/SseService.java +++ b/src/main/java/goorm/back/zo6/sse/application/SseService.java @@ -25,11 +25,16 @@ public class SseService { public SseEmitter subscribe(Long conferenceId, Long sessionId){ String eventKey = generateEventKey(conferenceId, sessionId); SseEmitter emitter = emitterRepository.findEmitterByKey(eventKey); - if(emitter != null){ + + // 기존 emitter가 있다면 send 시도로 연결 상태 확인 + if (emitter != null) { try { + emitter.send(SseEmitter.event().name("check").data("ping")); // 끊기지 않았다면 이게 보내짐 + log.info("기존 SSE 연결이 유지 중: {}", eventKey); + emitter.complete(); // 새로 연결하므로 기존 건 정리 + } catch (IOException e) { + log.info("기존 SSE 연결이 끊김 (CLOSE_WAIT 추정): {}", eventKey); emitter.complete(); - } catch (Exception e) { - log.warn("Emitter 연결 끊기에 실패하였습니다.: {}", e.getMessage()); } emitterRepository.deleteByEventKey(eventKey); }