WebSocketConfig.java
package com.oliwier.listmebackend.config;
import com.oliwier.listmebackend.websocket.DeviceHandshakeInterceptor;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
@Configuration
@EnableWebSocketMessageBroker
@RequiredArgsConstructor
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
private final DeviceHandshakeInterceptor deviceHandshakeInterceptor;
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
// /topic/** = server-to-client broadcasts (pub/sub)
registry.enableSimpleBroker("/topic");
// /app/** = client-to-server messages handled by @MessageMapping methods
registry.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws")
.addInterceptors(deviceHandshakeInterceptor)
.setAllowedOriginPatterns("*")
.withSockJS();
}
}