Skip to content

Commit 61aec8f

Browse files
committed
Feat: 웹소켓 서버 확인용 WebSocketTestController 추가 (#33)
1 parent a4ed911 commit 61aec8f

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
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

Comments
 (0)