이전 프로젝트의 문제점 중 브라우저 호환성을 해결하기 위해 SockJS를 추가하여 채팅을 구현하였다.
package com.example.woong99.websocket.config;
import com.example.woong99.websocket.controller.ChatHandler;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
@Configuration
@RequiredArgsConstructor
@EnableWebSocket // Websocket 활성화
public class WebSocketConfig implements WebSocketConfigurer {
private final ChatHandler chatHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(chatHandler, "/ws/chat")
.setAllowedOrigins("http://localhost:8080") // 와일드 카드는 보안성에 안좋으므로, 직접 지정해준다. TODO : CORS에 대해서는 추후 공부해서 정리하기
.withSockJS(); // 추가
}
}
WebSocket
을 SockJS
로 바꾸어준다.<script src="https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js"></script> //sockJS 라이브러리 추가
const websocket = new WebSocket("ws://localhost:8080/ws/chat");
->
const websocket = new SockJS("ws/chat");
SockJS
를 이용해 웹소켓을 지원하지 않는 브라우저에서 서버와 클라이언트 간 통신이 끊기지 않도록 구현했다!STOMP
를 이용해 여러 개의 채팅방을 구현해보자.