2017-01-12 9 views
0

스프링 부트 응용 프로그램이 있는데, npm과 webpack을 사용합니다. 나는 서버에서 클라이언트로 메시지를 보내기 위해 websocket을 시작하고 싶다. 내 서버는 자바와 stomp와 sockjs를 사용하는 자바 스크립트 클라이언트로 만들어졌습니다. 클라이언트 :Stomp SockJs 클라이언트 + 서버 스프링

socket = new SockJS('/myWebSocketEndPoint'); 
    stompClient = Stomp.over(socket); 
    stompClient.connect("","", function (frame) { 
      console.log('Connected: ' + frame); 
      stompClient.subscribe('/topic/notification', function (notificationBody) { 
        alert(angular.fromJson(notificationBody.body).content); 
    }); 
    }); 
} 

서버 : 구성 : 여기 내 코드의

@Configuration 
    @EnableWebSocketMessageBroker 
    public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { 

    @Override 
    public void configureMessageBroker(MessageBrokerRegistry config) { 
     config.enableSimpleBroker("/topic"); 
     config.setApplicationDestinationPrefixes("/app"); 
    } 

    @Override 
    public void registerStompEndpoints(StompEndpointRegistry registry) { 
     registry.addEndpoint("/myWebSocketEndPoint").withSockJS(); 
    } 
} 

컨트롤러 :

@SendTo("/topic/notification") 
    public String sendToMenuItems(String menuItem) { 
      return menuItem; 
    } 

문제는 : 난 내 응용 프로그램을, 그것을하지 실행하고자 할 때 websocket (서버가 작동하지 않거나 클라이언트가 서버를 찾지 못하는 것 같습니다)로 업그레이드합니다. 따라서 업그레이드 요청은 보류 중입니다. 내가 사용하는 경우 :

@Override 
    public void registerStompEndpoints(StompEndpointRegistry registry) { 
     registry.addEndpoint("/sockjs-client").withSockJS(); 
    } 

socket = new SockJS('/sockjs-client'); 

업그레이드가 작동하지만,하지 연결하고 가입. 왜 두 번째 구성을 사용하면 (부분적으로) 응용 프로그램이 작동하고 첫 번째 구성을 사용하면 안됩니까? 덕분에 많은

답변

1

에 한번 교체 :와

stompClient.connect("","", function (frame) { 
... 

:

stompClient.connect({}, function (frame) { 
... 
0

을 당신이 컨트롤러를 통해 @MessageMapping ("/ sockjs - 클라이언트")가 없습니다. @sendUser 주석과 함께이 주석을 사용해보십시오.