diff --git a/src/main/java/com/assu/server/domain/chat/config/WebSocketConfig.java b/src/main/java/com/assu/server/domain/chat/config/WebSocketConfig.java index cdb02cb4..7e87bf5d 100644 --- a/src/main/java/com/assu/server/domain/chat/config/WebSocketConfig.java +++ b/src/main/java/com/assu/server/domain/chat/config/WebSocketConfig.java @@ -1,6 +1,7 @@ package com.assu.server.domain.chat.config; import org.springframework.context.annotation.Configuration; +import org.springframework.messaging.simp.config.ChannelRegistration; import org.springframework.messaging.simp.config.MessageBrokerRegistry; import org.springframework.web.socket.config.annotation.*; @@ -8,25 +9,27 @@ @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { + @Override public void registerStompEndpoints(StompEndpointRegistry registry) { - registry.addEndpoint("/ws/chat") // 클라이언트 WebSocket 연결 지점 + registry.addEndpoint("/ws") // 클라이언트 WebSocket 연결 지점 .setAllowedOriginPatterns( + "*", + "https://assu.shop", "http://localhost:63342", "http://localhost:5173", // Vite 기본 "http://localhost:3000", // CRA/Next 기본 "http://127.0.0.1:*", - "http://192.168.*.*:*") // 같은 LAN의 실제 기기 테스트용 - .withSockJS(); // fallback for old browsers + "http://192.168.*.*:*"); // 같은 LAN의 실제 기기 테스트용 + // fallback for old browsers - // ✅ 모바일/안드로이드용 (네이티브 WebSocket) - registry.addEndpoint("/ws/chat-native") - .setAllowedOriginPatterns("*"); // wss 사용 시 TLS 세팅 } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.setApplicationDestinationPrefixes("/pub"); // 클라이언트가 보내는 prefix registry.enableSimpleBroker("/sub"); // 서버가 보내는 prefix + registry.enableSimpleBroker("/certification"); // 인증현황을 받아보기 위한 구독 주소 + registry.setApplicationDestinationPrefixes("/app"); // 클라이언트가 인증 요청을 보내는 주소 } } diff --git a/src/main/java/com/assu/server/domain/chat/service/ChatServiceImpl.java b/src/main/java/com/assu/server/domain/chat/service/ChatServiceImpl.java index cd8d672a..f732a7f4 100644 --- a/src/main/java/com/assu/server/domain/chat/service/ChatServiceImpl.java +++ b/src/main/java/com/assu/server/domain/chat/service/ChatServiceImpl.java @@ -95,6 +95,8 @@ public ChatResponseDTO.SendMessageResponseDTO handleMessage(ChatRequestDTO.ChatM log.info("saved message start"); Message saved = messageRepository.saveAndFlush(message); log.info("saved message middle"); + log.info("REQ roomId={}, senderId={}, receiverId={}, message={}", + request.roomId(), request.senderId(), request.receiverId(), request.message()); log.info("saved message id={}, roomId={}, senderId={}, receiverId={}", saved.getId(), room.getId(), sender.getId(), receiver.getId()); diff --git a/src/main/java/com/assu/server/global/config/SecurityConfig.java b/src/main/java/com/assu/server/global/config/SecurityConfig.java index 8d7f72b8..186af88d 100644 --- a/src/main/java/com/assu/server/global/config/SecurityConfig.java +++ b/src/main/java/com/assu/server/global/config/SecurityConfig.java @@ -22,7 +22,7 @@ public SecurityFilterChain filterChain(HttpSecurity http, JwtAuthFilter jwtAuthF .requestMatchers(HttpMethod.OPTIONS, "/**").permitAll() // ✅ WebSocket 핸드셰이크 허용 (네이티브 + SockJS 모두 포함) - .requestMatchers("/ws/**").permitAll() + .requestMatchers("/ws","/ws/**").permitAll() // Swagger 등 공개 리소스 .requestMatchers(