SSE 흐름 요약
C → A (SSE 연결 요청)
C → B (결제 요청)
B → A (검증 요청)
A → B (검증 응답) + A → C (SSE 응답)
핵심 구현 요소
SseEmitter로 A 서버에서 클라이언트 SSE 유지| 개념 | 설명 |
|---|---|
| SseEmitter | Spring에서 SSE 연결을 유지하는 객체 |
| text/event-stream | 클라이언트 Accept 헤더에 포함해야 하는 값 |
| onTimeout() / onCompletion() | SSE 연결 종료 처리용 콜백 |
| ConcurrentHashMap | emitter 저장용 Thread-safe 자료구조 |
| lastEventId | 클라이언트 재접속 시, 이전 미수신 이벤트 처리용 |
[ A 서버 ] SSE 연결 API
@GetMapping("/connect")
public SseEmitter connect(@RequestParam String clientId) {
String eventId = clientId + "_" + System.currentTimeMills();