Spring에서 STOMP 사용하기

박근수·2024년 4월 29일
0

ssafy_PINN

목록 보기
1/4

Config

import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.*;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;


@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer  {

    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker(new String[]{"/topic","/busker","/audience"}); // sub
        config.setApplicationDestinationPrefixes(new String[]{"/app"});
    }
    
    
// EndPoint를 등록하기. Pub/Sub이전에 EndPoint로 채널을 분리함.
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint(new String[]{"/api/chat"}).setAllowedOriginPatterns("*");
        registry.addEndpoint(new String[]{"/api/signal"}) 
                .setAllowedOriginPatterns("*");
    }


}
	// publishing 하는 쪽에서 prefix를 붙였을 때 라우팅된다.
    // 메세지를 받아서 가공하려고 할 때 사용함.
    @MessageMapping("/api/busker") // 메세지 받는 경로
    public void listenTestStomp(@Payload String message) {
        System.out.println(message);
//        System.out.println("test");
        HashMap<String, String> map = new HashMap<>();
        map.put("test", "test");

        simpMessagingTemplate.convertAndSend("/busker", map); // 메세지 보내기
        return;
    }

    @MessageMapping("/api/busker/{buskerName}")
    public void listenBusker(@DestinationVariable String buskerName, @Payload String message) {
        System.out.println(buskerName + " " + message);
        HashMap<String, String> map = new HashMap<>();
        map.put("buskerName", "test success");

        simpMessagingTemplate.convertAndSend("/busker/" + buskerName, map);
        return;
    }
profile
개성이 확실한편

0개의 댓글