public abstract class AbstractSockJsService extends ObjectSE implements SockJsService, CorsConfigurationSource
SockJsService
実装の抽象基本クラス。サブクラスは、セッション URL(つまり、トランスポート固有のリクエスト)を処理する必要があります。デフォルトでは、同一生成元リクエストのみが許可されます。setAllowedOrigins(java.util.Collection<java.lang.String>)
を使用して、許可されるオリジンのリストを指定します( "*" を含むリストは、すべてのオリジンを許可します)。修飾子と型 | フィールドと説明 |
---|---|
protected CorsConfiguration | corsConfiguration |
protected Log | logger |
コンストラクターと説明 |
---|
AbstractSockJsService(TaskScheduler scheduler) |
修飾子と型 | メソッドと説明 |
---|---|
protected void | addCacheHeaders(ServerHttpResponse response) |
protected void | addNoCacheHeaders(ServerHttpResponse response) |
protected boolean | checkOrigin(ServerHttpRequest request, ServerHttpResponse response, HttpMethod... httpMethods) |
CollectionSE<StringSE> | getAllowedOriginPatterns() configured オリジンパターンを返します。 |
CollectionSE<StringSE> | getAllowedOrigins() configured の許可されたオリジンを返します。 |
CorsConfiguration | getCorsConfiguration(HttpServletRequestEE request) 受信リクエストに基づいて CorsConfiguration を返します。 |
long | getDisconnectDelay() クライアントが切断されていると見なされるまでの時間をミリ秒単位で返します。 |
long | getHeartbeatTime() サーバーがメッセージを送信していない時間をミリ秒単位で返します。 |
int | getHttpMessageCacheSize() HTTP メッセージキャッシュのサイズを返します。 |
StringSE | getName() このサービスに関連付けられた一意の名前を返します。 |
StringSE | getSockJsClientLibraryUrl() SockJS JavaScript クライアントライブラリへの URL を返します。 |
int | getStreamBytesLimit() クローズされる前に、単一の HTTP ストリーミングリクエストで送信できる最小バイト数を返します。 |
TaskScheduler | getTaskScheduler() ハートビートメッセージのスケジュールに使用するスケジューラインスタンス。 |
protected abstract void | handleRawWebSocketRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler) 生の WebSocket 通信のリクエストを処理します。 |
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 | isSessionCookieNeeded() アプリケーションが機能するために JSESSIONID Cookie が必要かどうかを返します。 |
boolean | isWebSocketEnabled() 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 | setName(StringSE name) このサービスに一意の名前を設定します(主にロギングの目的で)。 |
void | setSessionCookieNeeded(boolean sessionCookieNeeded) SockJS プロトコルでは、サーバーがクライアントからの最初の "/info" リクエストに、アプリケーションが正しく機能するために JSESSIONIDCookie の使用が必要かどうかを示す "cookie_needed" ブールプロパティで応答する必要があります。 |
void | setSockJsClientLibraryUrl(StringSE clientLibraryUrl) ネイティブのクロスドメイン通信のないトランスポート(例: |
void | setStreamBytesLimit(int streamBytesLimit) ストリーミングトランスポートはクライアント側のレスポンスを保存し、配信されたメッセージが使用していたメモリを解放しません。 |
void | setSuppressCors(boolean suppressCors) このオプションを使用して、SockJS リクエストの CORS ヘッダーの自動追加を無効にすることができます。 |
void | setWebSocketEnabled(boolean webSocketEnabled) 一部のロードバランサーは WebSocket をサポートしていません。 |
boolean | shouldSuppressCors() CORS ヘッダーの自動追加が無効になっている場合に返されます。 |
protected boolean | validateRequest(StringSE serverId, StringSE sessionId, StringSE transport) |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
protected final Log logger
protected final CorsConfiguration corsConfiguration
public AbstractSockJsService(TaskScheduler scheduler)
public TaskScheduler getTaskScheduler()
public void setName(StringSE name)
public StringSE getName()
public void setSockJsClientLibraryUrl(StringSE clientLibraryUrl)
デフォルトでは、これは "https://cdn.jsdelivr.net/sockjs/1.0.0/sockjs.min.js" を指すように設定されています。ただし、アプリケーションが提供する URL を指すように設定することもできます。
相対 URL を指定することが可能であることに注意してください。その場合、URL は iframeURL に対して相対でなければなりません。たとえば、SockJS エンドポイントが "/sockjs" にマップされ、その結果 iframe URL が "/sockjs/iframe.html" であるとすると、SockJS マッピングの上の場所までトラバースするには、相対 URL が "../../" で始まる必要があります。プレフィックスベースのサーブレットマッピングの場合、もう 1 つのトラバーサルが必要になる場合があります。
public StringSE getSockJsClientLibraryUrl()
public void setStreamBytesLimit(int streamBytesLimit)
デフォルト値は 128K です(128 * 1024 など)。
public int getStreamBytesLimit()
public void setSessionCookieNeeded(boolean sessionCookieNeeded)
これは、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" に設定することを選択できます。
public boolean isSessionCookieNeeded()
public void setHeartbeatTime(long heartbeatTime)
デフォルト値は 25,000 (25 秒です)。
public long getHeartbeatTime()
public void setDisconnectDelay(long disconnectDelay)
デフォルト値は 5000 です。
public long getDisconnectDelay()
public void setHttpMessageCacheSize(int httpMessageCacheSize)
HTTP リクエスト間の時間は比較的短く、接続切断の遅延(setDisconnectDelay(long)
を参照)を超えないようにする必要があります。デフォルトでは 5 秒。
デフォルトのサイズは 100 です。
public int getHttpMessageCacheSize()
public void setWebSocketEnabled(boolean webSocketEnabled)
デフォルト値は "true" です。
public boolean isWebSocketEnabled()
public void setSuppressCors(boolean suppressCors)
デフォルト値は "false" です。
public boolean shouldSuppressCors()
setSuppressCors(boolean)
public void setAllowedOrigins(CollectionSE<StringSE> allowedOrigins)
CorsConfiguration.setAllowedOrigins(List)
を参照してください。また、CORS 仕様では "*"
と allowCredentials=true
の使用が許可されていないことに注意してください。より柔軟な原点パターンの場合は、代わりに setAllowedOriginPatterns(java.util.Collection<java.lang.String>)
を使用してください。 デフォルトでは、オリジンは許可されていません。allowedOriginPatterns
も設定されている場合、このプロパティよりも優先されます。
SockJS が有効で、オリジンが制限されている場合、リクエストのオリジンをチェックできないトランスポート型(Iframe ベースのトランスポート)は無効になっていることに注意してください。結果として、オリジンが制限されている場合、IE6 から 9 はサポートされません。
public CollectionSE<StringSE> getAllowedOrigins()
configured
の許可されたオリジンを返します。public void setAllowedOriginPatterns(CollectionSE<StringSE> allowedOriginPatterns)
setAllowedOrigins(Collection)
の代替。フォーマットの詳細やその他の考慮事項については、CorsConfiguration.setAllowedOriginPatterns(List)
を参照してください。デフォルトでは、これは設定されていません。
public CollectionSE<StringSE> getAllowedOriginPatterns()
configured
オリジンパターンを返します。public final void handleRequest(ServerHttpRequest request, ServerHttpResponse response, @Nullable StringSE sockJsPath, WebSocketHandler wsHandler) throws SockJsException
SockJsService
の handleRequest
request
- 現在のリクエスト response
- 現在のレスポンス sockJsPath
- SockJS サービスプレフィックス内の残りのパス wsHandler
- SockJS クライアントとメッセージを交換するハンドラー SockJsException
- リクエスト処理が失敗したときに発生します。通常、クライアントにメッセージを送信しようとして失敗すると、SockJS セッションが自動的に閉じ、SockJsTransportFailureException
が発生します。クライアントからのメッセージを読み取ろうとして失敗しても、セッションは自動的に閉じられず、SockJsMessageDeliveryException
または SockJsException
が発生する可能性があります。WebSocketHandler からの例外は、内部的に、または ExceptionWebSocketHandlerDecorator
やいくつかの代替デコレータを介して処理できます。前者は SockJsHttpRequestHandler
を使用すると自動的に追加されます。protected boolean validateRequest(StringSE serverId, StringSE sessionId, StringSE transport)
protected boolean checkOrigin(ServerHttpRequest request, ServerHttpResponse response, HttpMethod... httpMethods) throws IOExceptionSE
@Nullable public CorsConfiguration getCorsConfiguration(HttpServletRequestEE request)
CorsConfigurationSource
CorsConfiguration
を返します。CorsConfigurationSource
の getCorsConfiguration
CorsConfiguration
、または存在しない場合は null
protected void addCacheHeaders(ServerHttpResponse response)
protected void addNoCacheHeaders(ServerHttpResponse response)
protected void sendMethodNotAllowed(ServerHttpResponse response, HttpMethod... httpMethods)
protected abstract void handleRawWebSocketRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler) throws IOExceptionSE
protected abstract void handleTransportRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler webSocketHandler, StringSE sessionId, StringSE transport) throws SockJsException