2016-12-29 11 views
2

私はSockJs(v1.1.1)でSpring Websocketをクライアント上のSTOMP上で使用しています。以下のコードでクライアントを作成します。SockJsでSpring WebsocketをXHRストリーミングからWebsocketに切り替える

SockJS = require('sockjs-client') 
Stomp = require('webstomp-client') 
stompClient = Stomp.over(new SockJS(url)) 

うまくいきます。しかし、それはデフォルトで転送としてxhr_streamingを使用します。それは私には望ましくありません。 websocketトランポートに切り替えたい

stompClient = Stomp.over(new SockJS(url, null, {transports:'websocket'})) 

しかし、このアプローチは私のためには機能しません。これは、イベントに落ちる:

code: 2000 
reason: "All transports failed" 

私の春のWebSocketの設定は非常に簡単です:

@Configuration 
@EnableWebSocketMessageBroker 
public class WebSocketConfig extends AbstractSessionWebSocketMessageBrokerConfigurer<ExpiringSession> { 

    @Override 
    public void configureStompEndpoints(StompEndpointRegistry registry) { 
     registry.addEndpoint("/myEndpoint").setAllowedOrigins("*") 
      .withSockJS(); 
    } 

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

} 

私はxhr_streamingに直面する主な問題は、すべてのストリームの要求は、ユーザーセッションの最終アクセス時刻を更新することです(私が使用して春セッションも同様)。しかし、それは私のアプリケーションにとって望ましい動作ではありません。だから私はそれを修正することができますか?そして、websocketトランスポートのヘルプですか?前もって感謝します。

答えて

2

だから私は理由がある。私はproxyオプションのwebpack devサーバを使用しています。デフォルトでは、wsプロトコル要求をプロキシしません(ヘッダーが失われます)。設定にws: trueを追加する必要があり、すべて正常に動作します。

proxy: { 
     '/api/*': { 
      target: 'http://localhost:8080', 
      pathRewrite: {'^/api' : ''}, 
      ws: true 
     } 
    } 
関連する問題