1+ package com .back .domain .websocket .controller ;
2+
3+ import com .back .global .common .dto .RsData ;
4+ import lombok .extern .slf4j .Slf4j ;
5+ import org .springframework .http .HttpStatus ;
6+ import org .springframework .http .ResponseEntity ;
7+ import org .springframework .web .bind .annotation .GetMapping ;
8+ import org .springframework .web .bind .annotation .RequestMapping ;
9+ import org .springframework .web .bind .annotation .RestController ;
10+
11+ import java .time .LocalDateTime ;
12+ import java .util .HashMap ;
13+ import java .util .Map ;
14+
15+ @ Slf4j
16+ @ RestController
17+ @ RequestMapping ("/api/websocket" )
18+ public class WebSocketTestController { // WebSocket 기능 테스트용 REST 컨트롤러
19+
20+ // WebSocket 서버 상태 확인
21+ @ GetMapping ("/health" )
22+ public ResponseEntity <RsData <Map <String , Object >>> healthCheck () {
23+ log .info ("WebSocket 헬스체크 요청" );
24+
25+ Map <String , Object > data = new HashMap <>();
26+ data .put ("service" , "WebSocket" );
27+ data .put ("status" , "running" );
28+ data .put ("timestamp" , LocalDateTime .now ());
29+ data .put ("endpoints" , Map .of (
30+ "websocket" , "/ws" ,
31+ "chat" , "/app/rooms/{roomId}/chat" ,
32+ "join" , "/app/rooms/{roomId}/join" ,
33+ "leave" , "/app/rooms/{roomId}/leave"
34+ ));
35+
36+ return ResponseEntity
37+ .status (HttpStatus .OK )
38+ .body (RsData .success ("WebSocket 서비스가 정상 동작중입니다." , data ));
39+ }
40+
41+ // WebSocket 연결 정보 제공
42+ @ GetMapping ("/info" )
43+ public ResponseEntity <RsData <Map <String , Object >>> getConnectionInfo () {
44+ log .info ("WebSocket 연결 정보 요청" );
45+
46+ Map <String , Object > connectionInfo = new HashMap <>();
47+ connectionInfo .put ("websocketUrl" , "/ws" );
48+ connectionInfo .put ("sockjsSupport" , true );
49+ connectionInfo .put ("stompVersion" , "1.2" );
50+ connectionInfo .put ("subscribeTopics" , Map .of (
51+ "roomChat" , "/topic/rooms/{roomId}/chat" ,
52+ "privateMessage" , "/user/queue/messages" ,
53+ "notifications" , "/user/queue/notifications"
54+ ));
55+ connectionInfo .put ("sendDestinations" , Map .of (
56+ "roomChat" , "/app/rooms/{roomId}/chat" ,
57+ "joinRoom" , "/app/rooms/{roomId}/join" ,
58+ "leaveRoom" , "/app/rooms/{roomId}/leave"
59+ ));
60+
61+ return ResponseEntity
62+ .status (HttpStatus .OK )
63+ .body (RsData .success ("WebSocket 연결 정보" , connectionInfo ));
64+ }
65+ }
0 commit comments