2016-04-06 13 views
0

私は、SockJSを備えたWebSocket上のSTOMPとJWTを使用したRest Endpointを使用して全二重通信のモバイルデバイスを接続するStateless Spring(4.2.4.RELEASE)私はWebサーバーとしてTomcat 8.0.33を使用しており、sockjs javascriptクライアントでhtmlを使用してテストしています。 stompプロトコルはhttpフォールバックを使って正常に動作しますが、websocketプロトコルだけを使って行うことはできません。私はCORSをいろいろ試してみましたが、Tomcatの問題かバネの設定が間違っています。私は同じドメインとポートでも自分のHTMLをテストしました.SockJSはまだxhrやiframeに落ちています。SockJSとTomcat上のSTOMPがWebソケットにアップグレードされていない春

WebScoketConfig.java

@EnableWebSocketMessageBroker 
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer 
{ 

@Override 
public void registerStompEndpoints(StompEndpointRegistry registry) 
{ 
    RequestUpgradeStrategy upgradeStrategy = new TomcatRequestUpgradeStrategy(); 
    registry.addEndpoint("/ws").setHandshakeHandler(new DefaultHandshakeHandler(upgradeStrategy)) 
    .setAllowedOrigins("*").withSockJS().setSessionCookieNeeded(false) 
    .setStreamBytesLimit(512 * 1024) 
    .setHttpMessageCacheSize(1000) 
    .setDisconnectDelay(30 * 1000); 
} 

@Override 
public void configureClientOutboundChannel(ChannelRegistration registration) { 
    registration.taskExecutor().corePoolSize(50); 
} 


@Override 
public void configureMessageBroker(MessageBrokerRegistry registry) 
{ 
    registry.enableSimpleBroker("/queue/", "/topic/"); 
    // registry.enableStompBrokerRelay("/queue/", "/topic/"); 
    registry.setApplicationDestinationPrefixes("/myapp"); 
} 

public void configureWebSocketTransport(WebSocketTransportRegistration registration) { 
    registration.setMessageSizeLimit(500 * 1024); 
    registration.setSendBufferSizeLimit(1024 * 1024); 
    registration.setSendTimeLimit(20000); 
} 
} 

WebSecurityConfig.java

public class WebSecurityConfig extends WebSecurityConfigurerAdapter 
    { 

     @Override 
     protected void configure(HttpSecurity http) throws Exception 
     { 
      http.csrf().disable() 
      .authorizeRequests() 
      .antMatchers("/**").permitAll();     
     } 

     @Override 
     protected void configure(AuthenticationManagerBuilder auth) throws Exception 
     { 

     } 
    } 

答えて

0

私の問題は解決しましたが、実際にはコードは良好でしたが、開かれた直後にウイルス対策ソフト(Kaspersky)がクライアントブラウザの接続を終了していました。 SockJSは別の戦略に転用されます。私はウィルス対策ソフトをオフにしてクライアントをテストし、Websocketトランスポートは美しく動作していました。 Linuxの&でもテストされています。

0

のWebSocket以降バージョン8からのTomcatに支持されています。 Tomcatのバージョンを確認し、アップグレードしてください。

また、ブラウザでWebsocketのサポートを確認してください。

+0

私は最新のTomcatバージョンを使用しています。 WebSocketをサポートしています。 – cardeol

関連する問題