私は春のブートアプリケーションを持っています。私は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番目の設定を使用すると(部分的に)私のアプリケーションが動作し、最初の設定を使用してもそれはありませんか?交換するおかげでたくさん