クラス AbstractSockJsService

java.lang.ObjectSE
org.springframework.web.socket.sockjs.support.AbstractSockJsService
実装されたすべてのインターフェース:
CorsConfigurationSourceSockJsService
既知の直属サブクラス
TransportHandlingSockJsService

public abstract class AbstractSockJsService extends ObjectSE implements SockJsService, CorsConfigurationSource
SockJS パス解決と静的 SockJS リクエスト ("/info","/iframe.html" など) の処理を提供する SockJsService 実装の抽象基本クラス。サブクラスは、セッション URL (つまり、トランスポート固有のリクエスト) を処理する必要があります。

デフォルトでは、同じオリジンのリクエストのみが許可されます。setAllowedOrigins(java.util.Collection<java.lang.String>) を使用して、許可されるオリジンのリストを指定します ( "*" を含むリストはすべてのオリジンを許可します)。

導入:
4.0
作成者:
Rossen Stoyanchev, Sebastien Deleuze
  • フィールドの詳細

    • logger

      protected final Log logger
    • corsConfiguration

      protected final CorsConfiguration corsConfiguration
  • コンストラクターの詳細

    • AbstractSockJsService

      public AbstractSockJsService(TaskScheduler scheduler)
  • メソッドの詳細

    • getTaskScheduler

      public TaskScheduler getTaskScheduler()
      ハートビートメッセージのスケジュールに使用するスケジューラインスタンス。
    • setName

      public void setName(StringSE name)
      このサービスに一意の名前を設定します(主にロギングの目的で)。
    • getName

      public StringSE getName()
      このサービスに関連付けられた一意の名前を返します。
    • setSockJsClientLibraryUrl

      public void setSockJsClientLibraryUrl(StringSE clientLibraryUrl)
      ネイティブのクロスドメイン通信を持たないトランスポート (例: "eventsource" ,"htmlfile" ) は、非表示の iframe の " 外部 " ドメインから単純なページを取得して、iframe のコードが SockJS サーバーに対してローカルなドメインから実行できるようにする必要があります。iframe は SockJS JavaScript クライアントライブラリをロードする必要があるため、このプロパティを使用してどこからロードするかを指定できます。

      デフォルトでは、これは "https://cdn.jsdelivr.net/sockjs/1.0.0/sockjs.min.js" を指すように設定されています。ただし、アプリケーションによって提供される URL を指すように設定することもできます。

      相対 URL を指定できることに注意してください。その場合、URL は iframe URL に対して相対的でなければなりません。たとえば、SockJS エンドポイントが "/sockjs" にマッピングされ、結果として iframe URL "/sockjs/iframe.html" が生成されると仮定すると、相対 URL は "../../" で始まり、SockJS マッピングの上の場所までトラバースする必要があります。プレフィックスベースのサーブレットマッピングの場合、もう 1 つのトラバーサルが必要になる場合があります。

    • getSockJsClientLibraryUrl

      public StringSE getSockJsClientLibraryUrl()
      SockJS JavaScript クライアントライブラリへの URL を返します。
    • setStreamBytesLimit

      public void setStreamBytesLimit(int streamBytesLimit)
      ストリーミングトランスポートはクライアント側のレスポンスを保存し、配信されたメッセージが使用していたメモリを解放しません。そのようなトランスポートは、時々接続をリサイクルする必要があります。このプロパティは、1 つの HTTP ストリーミングリクエストで送信される最小バイト数を設定してから、それをクローズします。その後、クライアントは新しいリクエストを開きます。この値を 1 に設定すると、ストリーミングが実質的に無効になり、ストリーミングトランスポートがポーリングトランスポートのように動作します。

      デフォルト値は 128K です(128 * 1024 など)。

    • getStreamBytesLimit

      public int getStreamBytesLimit()
      クローズされる前に、単一の HTTP ストリーミングリクエストで送信できる最小バイト数を返します。
    • setSessionCookieNeeded

      public void setSessionCookieNeeded(boolean sessionCookieNeeded)
      SockJS プロトコルでは、サーバーがクライアントからの最初の "/info" リクエストに、アプリケーションが正しく機能するために JSESSIONIDCookie の使用が必要かどうかを示す "cookie_needed" ブールプロパティで応答する必要があります。負荷分散用、または HTTP セッションを使用するための Java サーブレットコンテナー内。

      これは、XDomainRequest(変更された AJAX/XHR)をサポートする IE 8,9 で特に重要です。これは、ドメイン間でリクエストを実行できますが、Cookie を送信しません。これらの場合、SockJS クライアントは、Cookie を送信できるようにするために、"xdr-streaming" よりも "iframe-htmlfile" トランスポートを優先します。

      SockJS プロトコルは、このプロパティが true に設定されている場合、SockJS サービスが JSESSIONID Cookie をエコーバックすることも期待しています。ただし、サーブレットコンテナーで実行する場合は、コンテナーが処理するため、これは必要ありません。

      デフォルト値は "true" で、Cookie(および特に JSESSIONID Cookie)をサポートする IE 8,9 でアプリケーションが正しく機能する可能性を最大化します。ただし、Cookie(および HTTP セッション)の使用が不要な場合、アプリケーションはこれを "false" に設定することを選択できます。

    • isSessionCookieNeeded

      public boolean isSessionCookieNeeded()
      アプリケーションが機能するために JSESSIONID Cookie が必要かどうかを返します。
    • setHeartbeatTime

      public void setHeartbeatTime(long heartbeatTime)
      サーバーがメッセージを送信せず、接続が切断されないようにするためにサーバーがクライアントにハートビートフレームを送信するまでの時間をミリ秒単位で指定します。

      デフォルト値は 25,000 (25 秒です)。

    • getHeartbeatTime

      public long getHeartbeatTime()
      サーバーがメッセージを送信していない時間をミリ秒単位で返します。
    • setDisconnectDelay

      public void setDisconnectDelay(long disconnectDelay)
      受信接続(つまり、サーバーがクライアントにデータを送信できるアクティブな接続)がない場合に、クライアントが切断されたと見なされるまでのミリ秒単位の時間。

      デフォルト値は 5000 です。

    • getDisconnectDelay

      public long getDisconnectDelay()
      クライアントが切断されていると見なされるまでの時間をミリ秒単位で返します。
    • setHttpMessageCacheSize

      public void setHttpMessageCacheSize(int httpMessageCacheSize)
      クライアントからの次の HTTP ポーリングリクエストを待つ間にセッションがキャッシュできるサーバーからクライアントへのメッセージの数。ストリーミングトランスポートでも HTTP リクエストを定期的にリサイクルするため、すべての HTTP トランスポートはこのプロパティを使用します。

      HTTP リクエスト間の時間は比較的短く、接続切断の遅延(setDisconnectDelay(long) を参照)を超えないようにする必要があります。デフォルトでは 5 秒。

      デフォルトのサイズは 100 です。

    • getHttpMessageCacheSize

      public int getHttpMessageCacheSize()
      HTTP メッセージキャッシュのサイズを返します。
    • setWebSocketEnabled

      public void setWebSocketEnabled(boolean webSocketEnabled)
      一部のロードバランサーは WebSocket をサポートしていません。このオプションを使用して、サーバー側で WebSocket トランスポートを無効にすることができます。

      デフォルト値は "true" です。

    • isWebSocketEnabled

      public boolean isWebSocketEnabled()
      WebSocket トランスポートが有効かどうかを返します。
    • setSuppressCors

      public void setSuppressCors(boolean suppressCors)
      このオプションを使用して、SockJS リクエストの CORS ヘッダーの自動追加を無効にすることができます。

      デフォルト値は "false" です。

      導入:
      4.1.2
    • shouldSuppressCors

      public boolean shouldSuppressCors()
      CORS ヘッダーの自動追加が無効になっている場合に返されます。
      導入:
      4.1.2
      関連事項:
    • setAllowedOrigins

      public void setAllowedOrigins(CollectionSE<StringSE> allowedOrigins)
      ブラウザーからのクロスオリジンリクエストを許可するオリジンを設定します。フォーマットの詳細と考慮事項については CorsConfiguration.setAllowedOrigins(List) を参照してください。また、CORS 仕様では "*" と allowCredentials=true の使用が許可されていないことに注意してください。より柔軟な原点パターンの場合は、代わりに setAllowedOriginPatterns(java.util.Collection<java.lang.String>) を使用してください。

      デフォルトでは、オリジンは許可されていません。allowedOriginPatterns も設定されている場合、このプロパティよりも優先されます。

      SockJS が有効で、オリジンが制限されている場合、リクエストのオリジンをチェックできないトランスポート型(Iframe ベースのトランスポート)は無効になっていることに注意してください。結果として、オリジンが制限されている場合、IE6 から 9 はサポートされません。

      導入:
      4.1.2
      関連事項:
    • getAllowedOrigins

      @Nullable public CollectionSE<StringSE> getAllowedOrigins()
      configured の許可されたオリジンを返します。
      導入:
      4.1.2
    • setAllowedOriginPatterns

      public void setAllowedOriginPatterns(CollectionSE<StringSE> allowedOriginPatterns)
      ブラウザーからのクロスオリジンリクエストが許可されるオリジンを指定するためのより柔軟なパターンをサポートする setAllowedOrigins(Collection) の代替。フォーマットの詳細やその他の考慮事項については、CorsConfiguration.setAllowedOriginPatterns(List) を参照してください。

      デフォルトでは、これは設定されていません。

      導入:
      5.2.3
    • getAllowedOriginPatterns

      @Nullable public CollectionSE<StringSE> getAllowedOriginPatterns()
      configured オリジンパターンを返します。
      導入:
      5.3.2
    • handleRequest

      public final void handleRequest(ServerHttpRequest request, ServerHttpResponse response, @Nullable StringSE sockJsPath, WebSocketHandler wsHandler) throws SockJsException
      このメソッドは、SockJS パスを決定し、SockJS 静的 URL を処理します。セッション URL と生の WebSocket リクエストは、抽象メソッドに委譲されます。
      次で指定:
      インターフェース SockJsServicehandleRequest 
      パラメーター:
      request - 現在のリクエスト
      response - 現在のレスポンス
      sockJsPath - SockJS サービスプレフィックス内の残りのパス
      wsHandler - SockJS クライアントとメッセージを交換するハンドラー
      例外:
      SockJsException - リクエスト処理が失敗したときに発生します。通常、クライアントにメッセージを送信しようとして失敗すると、SockJS セッションが自動的に閉じ、SockJsTransportFailureException が発生します。クライアントからのメッセージを読み取ろうとして失敗しても、セッションは自動的に閉じられず、SockJsMessageDeliveryException または SockJsException が発生する可能性があります。WebSocketHandler からの例外は、内部的に、または ExceptionWebSocketHandlerDecorator やいくつかの代替デコレータを介して処理できます。前者は SockJsHttpRequestHandler を使用すると自動的に追加されます。
    • validateRequest

      protected boolean validateRequest(StringSE serverId, StringSE sessionId, StringSE transport)
    • checkOrigin

      protected boolean checkOrigin(ServerHttpRequest request, ServerHttpResponse response, HttpMethod... httpMethods) throws IOExceptionSE
      例外:
      IOExceptionSE
    • getCorsConfiguration

      @Nullable public CorsConfiguration getCorsConfiguration(HttpServletRequestEE request)
      インターフェースからコピーされた説明: CorsConfigurationSource
      受信リクエストに基づいて CorsConfiguration を返します。
      次で指定:
      インターフェース CorsConfigurationSourcegetCorsConfiguration 
      戻り値:
      関連する CorsConfiguration、または存在しない場合は null 
    • addCacheHeaders

      protected void addCacheHeaders(ServerHttpResponse response)
    • addNoCacheHeaders

      protected void addNoCacheHeaders(ServerHttpResponse response)
    • sendMethodNotAllowed

      protected void sendMethodNotAllowed(ServerHttpResponse response, HttpMethod... httpMethods)
    • handleRawWebSocketRequest

      protected abstract void handleRawWebSocketRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler) throws IOExceptionSE
      生の WebSocket 通信のリクエストを処理します。つまり、SockJS メッセージフレーミングを使用しません。
      例外:
      IOExceptionSE
    • handleTransportRequest

      protected abstract void handleTransportRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler, StringSE sessionId, StringSE transport) throws SockJsException
      SockJS セッション URL(つまり、トランスポート固有のリクエスト)を処理します。
      例外:
      SockJsException