2017-01-12 11 views
0

私は春のブートアプリケーションを持っています。私はnpmとwebpackを使用しています。私はサーバーからクライアントにいくつかのメッセージを送るためにwebsocketを開始したい。私のサーバーはJavaでビルドされ、クライアントはjavascriptでstompとsockjsを使用します。ここ は私のコードです: クライアント:Stomp SockJsクライアント+サーバーSpring

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'); 

をアップグレードは動作しますが、接続して購読ません。なぜ私は2番目の設定を使用すると(部分的に)私のアプリケーションが動作し、最初の設定を使用してもそれはありませんか?交換するおかげでたくさん

答えて

1

試してみてください。

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

と:

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

あなたは、コントローラ上( "/ sockjs-クライアント")@MessageMappingありません。 このアノテーションと@sendUserアノテーションを試してみてください。

関連する問題