クラス AbstractSockJsService
- 実装されたすべてのインターフェース:
CorsConfigurationSource
,SockJsService
- 既知の直属サブクラス
TransportHandlingSockJsService
SockJsService
実装の抽象基本クラス。サブクラスはセッション URL (つまり、トランスポート固有のリクエスト) を処理する必要があります。 デフォルトでは、同じオリジンのリクエストのみが許可されます。setAllowedOrigins(java.util.Collection<java.lang.String>)
を使用して、許可されるオリジンのリストを指定します ( "*" を含むリストはすべてのオリジンを許可します)。
- 導入:
- 4.0
- 作成者:
- Rossen Stoyanchev, Sebastien Deleuze
フィールドサマリー
フィールドコンストラクターのサマリー
コンストラクター方法の概要
修飾子と型メソッド説明protected void
addCacheHeaders
(ServerHttpResponse response) protected void
addNoCacheHeaders
(ServerHttpResponse response) protected boolean
checkOrigin
(ServerHttpRequest request, ServerHttpResponse response, HttpMethod... httpMethods) configured
オリジンパターンを返します。configured
の許可されたオリジンを返します。getCorsConfiguration
(HttpServletRequestEE request) 受信リクエストに基づいてCorsConfiguration
を返します。long
クライアントが切断されていると見なされるまでの時間をミリ秒単位で返します。long
サーバーがメッセージを送信していない時間をミリ秒単位で返します。int
HTTP メッセージキャッシュのサイズを返します。getName()
このサービスに関連付けられた一意の名前を返します。SockJS JavaScript クライアントライブラリへの URL を返します。int
クローズされる前に、単一の HTTP ストリーミングリクエストで送信できる最小バイト数を返します。ハートビートメッセージのスケジュールに使用するスケジューラインスタンス。protected abstract void
handleRawWebSocketRequest
(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler) 生の WebSocket 通信のリクエストを処理します。final void
handleRequest
(ServerHttpRequest request, ServerHttpResponse response, StringSE sockJsPath, WebSocketHandler wsHandler) このメソッドは、SockJS パスを決定し、SockJS 静的 URL を処理します。protected abstract void
handleTransportRequest
(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler, StringSE sessionId, StringSE transport) SockJS セッション URL を処理します(つまりboolean
アプリケーションが機能するために JSESSIONID Cookie が必要かどうかを返します。boolean
WebSocket トランスポートが有効かどうかを返します。protected void
sendMethodNotAllowed
(ServerHttpResponse response, HttpMethod... httpMethods) void
setAllowedOriginPatterns
(CollectionSE<StringSE> allowedOriginPatterns) ブラウザーからのクロスオリジンリクエストが許可されるオリジンを指定するためのより柔軟なパターンをサポートするsetAllowedOrigins(Collection)
の代替。void
setAllowedOrigins
(CollectionSE<StringSE> allowedOrigins) ブラウザーからのクロスオリジンリクエストを許可するオリジンを設定します。void
setDisconnectDelay
(long disconnectDelay) 受信接続がない後、クライアントが切断されたと見なされるまでの時間(ミリ秒単位)。void
setHeartbeatTime
(long heartbeatTime) サーバーがメッセージを送信せず、接続が切断されないようにするためにサーバーがクライアントにハートビートフレームを送信するまでの時間をミリ秒単位で指定します。void
setHttpMessageCacheSize
(int httpMessageCacheSize) クライアントからの次の HTTP ポーリングリクエストを待つ間にセッションがキャッシュできるサーバーからクライアントへのメッセージの数。void
このサービスに一意の名前を設定します(主にロギングの目的で)。void
setSessionCookieNeeded
(boolean sessionCookieNeeded) SockJS プロトコルでは、サーバーは、負荷分散や HTTP セッションの使用のための Java サーブレットコンテナーなど、アプリケーションが正しく機能するために JSESSIONID Cookie の使用が必要かどうかを示す "cookie_needed" ブールプロパティを使用して、クライアントからの最初の "/info" リクエストに応答する必要があります。void
setSockJsClientLibraryUrl
(StringSE clientLibraryUrl) ネイティブのクロスドメイン通信のないトランスポート (たとえば、"eventsource"、"htmlfile" ) は、iframe
のコードが SockJS サーバーのローカルドメインから実行できるように、非表示のiframe
の「外部」ドメインから単純なページを取得する必要があります。void
setStreamBytesLimit
(int streamBytesLimit) ストリーミングトランスポートはクライアント側のレスポンスを保存し、配信されたメッセージが使用していたメモリを解放しません。void
setSuppressCors
(boolean suppressCors) このオプションを使用して、SockJS リクエストの CORS ヘッダーの自動追加を無効にすることができます。void
setWebSocketEnabled
(boolean webSocketEnabled) 一部のロードバランサーは WebSocket をサポートしていません。boolean
CORS ヘッダーの自動追加が無効になっている場合に返されます。protected boolean
validateRequest
(StringSE serverId, StringSE sessionId, StringSE transport)
フィールドの詳細
logger
corsConfiguration
コンストラクターの詳細
AbstractSockJsService
メソッドの詳細
getTaskScheduler
ハートビートメッセージのスケジュールに使用するスケジューラインスタンス。setName
このサービスに一意の名前を設定します(主にロギングの目的で)。getName
このサービスに関連付けられた一意の名前を返します。setSockJsClientLibraryUrl
ネイティブのクロスドメイン通信のないトランスポート (たとえば、"eventsource"、"htmlfile" ) は、iframe
のコードが SockJS サーバーのローカルドメインから実行できるように、非表示のiframe
の「外部」ドメインから単純なページを取得する必要があります。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
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 プロトコルでは、サーバーは、負荷分散や HTTP セッションの使用のための Java サーブレットコンテナーなど、アプリケーションが正しく機能するために JSESSIONID Cookie の使用が必要かどうかを示す "cookie_needed" ブールプロパティを使用して、クライアントからの最初の "/info" リクエストに応答する必要があります。これは、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
ブラウザーからのクロスオリジンリクエストを許可するオリジンを設定します。フォーマットの詳細と考慮事項についてはCorsConfiguration.setAllowedOrigins(List)
を参照してください。また、CORS 仕様では"*"
とallowCredentials=true
の使用が許可されていないことに注意してください。より柔軟な原点パターンの場合は、代わりにsetAllowedOriginPatterns(java.util.Collection<java.lang.String>)
を使用してください。デフォルトでは、オリジンは許可されていません。
allowedOriginPatterns
も設定されている場合、このプロパティよりも優先されます。SockJS が有効で、オリジンが制限されている場合、リクエストのオリジンをチェックできないトランスポート型(Iframe ベースのトランスポート)は無効になっていることに注意してください。結果として、オリジンが制限されている場合、IE6 から 9 はサポートされません。
getAllowedOrigins
configured
の許可されたオリジンを返します。- 導入:
- 4.1.2
setAllowedOriginPatterns
ブラウザーからのクロスオリジンリクエストが許可されるオリジンを指定するためのより柔軟なパターンをサポートするsetAllowedOrigins(Collection)
の代替。フォーマットの詳細やその他の考慮事項については、CorsConfiguration.setAllowedOriginPatterns(List)
を参照してください。デフォルトでは、これは設定されていません。
- 導入:
- 5.2.3
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 リクエストは、抽象メソッドに委譲されます。- 次で指定:
- インターフェース
SockJsService
のhandleRequest
- パラメーター:
request
- 現在のリクエストresponse
- 現在のレスポンスsockJsPath
- SockJS サービスプレフィックス内の残りのパスwsHandler
- SockJS クライアントとメッセージを交換するハンドラー- 例外:
SockJsException
- リクエスト処理が失敗したときに発生します。通常、クライアントにメッセージを送信しようとして失敗すると、SockJS セッションが自動的に閉じ、SockJsTransportFailureException
が発生します。クライアントからのメッセージを読み取ろうとして失敗しても、セッションは自動的に閉じられず、SockJsMessageDeliveryException
またはSockJsException
が発生する可能性があります。WebSocketHandler からの例外は、内部的に、またはExceptionWebSocketHandlerDecorator
やいくつかの代替デコレータを介して処理できます。前者はSockJsHttpRequestHandler
を使用すると自動的に追加されます。
validateRequest
checkOrigin
protected boolean checkOrigin(ServerHttpRequest request, ServerHttpResponse response, HttpMethod... httpMethods) throws IOExceptionSE getCorsConfiguration
インターフェースからコピーされた説明:CorsConfigurationSource
受信リクエストに基づいてCorsConfiguration
を返します。- 次で指定:
- インターフェース
CorsConfigurationSource
のgetCorsConfiguration
- 戻り値:
- 関連する
CorsConfiguration
、または存在しない場合はnull
addCacheHeaders
addNoCacheHeaders
sendMethodNotAllowed
handleRawWebSocketRequest
protected abstract void handleRawWebSocketRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler) throws IOExceptionSE 生の WebSocket 通信のリクエストを処理します。つまり、SockJS メッセージフレーミングを使用しません。handleTransportRequest
protected abstract void handleTransportRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler, StringSE sessionId, StringSE transport) throws SockJsException SockJS セッション URL(つまり、トランスポート固有のリクエスト)を処理します。