Spring_11_WebSocket
build.gradle에 다음 의존성 추가:implementation 'org.springframework.boot:spring-boot-starter-websocket'
TextWebSocketHandler를 상속받아 구현@Component로 등록하여 Spring Container에 Bean으로 삽입@Component
public class ChatHandler extends TextWebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) {
// 클라이언트와 연결 성공 시 실행
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
// 연결 종료 시 실행
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) {
// 클라이언트가 메시지를 보냈을 때 실행
}
}
WebSocketConfigurer를 구현하여 경로 매핑@EnableWebSocket으로 WebSocket 기능 활성화@Configuration // SpringContainer Bean 등록
@EnableWebSocket // webSocket 활성화
public class WebSocketConfig implements WebSocketConfigurer {
@Autowired
private ChatHandler chatHandler; // DI
@Override
// 개발자가 만든 서버 웹 소켓(핸들러) 객체들을 스프링이 인식할 수 있도록 경로·주소를 연결하는 것
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
// registry.addHandler( 서버웹소켓 객체, "경로")
registry.addHandler(chatHandler, "/chat");
}
}
const client = new WebSocket("ws://localhost:8080/chat");
ws://는 WebSocket 프로토콜을 의미하며,/chat은 Spring에서 매핑한 경로
client.onopen = function(event) {
console.log("서버와 연결 성공");
};
client.onclose = function(event) {
console.log("서버와 연결 종료");
};
client.onerror = function(event) {
console.error("서버와 연결 중 오류 발생");
};
client.onmessage = function(event) {
console.log("서버로부터 메시지 수신:", event.data);
};
client.send("안녕하세요, 서버!");
@ResponseBody를 통해 JSON ↔ Map 자동 변환private final ObjectMapper objectMapper = new ObjectMapper();
JSON ↔ Map 변환을 위한 라이브러리