インターフェース RemoteEndpoint
- すべての既知のサブインターフェース:
RemoteEndpoint.Async
,RemoteEndpoint.Basic
public interface RemoteEndpoint
RemoteEndpoint オブジェクトはコンテナーによって提供され、Web ソケット会話の「もう一方の端」またはピアを表します。RemoteEndpoint のインスタンスは、Session.getBasicRemote()
またはSession.getAsyncRemote()
を使用してセッションから取得されます。この種のオブジェクトには、Web ソケットメッセージを送信するためのさまざまな方法が含まれています。RemoteEndpoint オブジェクトには、WebSocket メッセージを同期送信するための RemoteEndpoint.Basic と、メッセージを非同期に送信するための RemoteEndpoint.Async の 2 種類があります。ピアへの Web ソケットメッセージの正常な配信の保証はありませんが、メッセージを送信するアクションによってコンテナーに認識されているエラーが発生した場合、API はそれをスローします。RemoteEndpoints には、メッセージを送信するためのさまざまな方法が含まれています。メッセージ全体、部分、WebSocket の ping や pong を含むさまざまなデータ形式です。
実装は、メッセージのバッチ処理をサポートする場合とサポートしない場合があります。バッチ処理をサポートする実装の予想されるセマンティクスの詳細は、
setBatchingAllowed(boolean)
に記載されています。メモ: 実装では、大きなメッセージを小さな部分で送信するための独自のスキームを選択できます。これらのスキームは、メッセージが最終的にネットワーク上で送信される基盤となる WebSocket データフレームと関連がある場合とない場合があります。
基礎となる接続が閉じられ、RemoteEndpoint のメソッドが呼び出されようとすると、エラーが生成されます。メッセージを送信するメソッドの場合、これは IOException になり、エンドポイントの構成を変更するメソッドの場合、これはランタイム IllegalArgumentExceptions になります。
- 作成者:
- dannycoward
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 インターフェース 説明 static interface
RemoteEndpoint.Async
Web ソケット会話のピアのこの表現には、メッセージを非同期的に送信する機能があります。static interface
RemoteEndpoint.Basic
Web ソケット会話のピアのこの表現には、メッセージを同期的に送信する機能があります。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 void
flushBatch()
この方法は、この RemoteEndpint でバッチ処理が許可されている場合にのみ使用されます。boolean
getBatchingAllowed()
実装が送信前に送信メッセージをバッチ処理できるかどうかを返します。void
sendPing(ByteBufferSE applicationData)
指定されたアプリケーションデータを含む Ping メッセージをリモートエンドポイントに送信します。void
sendPong(ByteBufferSE applicationData)
開発者が、セッションの単方向ハートビートとして機能するために、指定されたアプリケーションデータを含む一方的な Pong メッセージを送信できるようにします。void
setBatchingAllowed(boolean allowed)
送信する前に送信メッセージをバッチ処理できることを実装に示します。
メソッドの詳細
setBatchingAllowed
void setBatchingAllowed(boolean allowed) throws IOExceptionSE
送信する前に送信メッセージをバッチ処理できることを実装に示します。すべての実装が送信メッセージのバッチ処理をサポートしているわけではありません。RemoteEndpoints のデフォルトモードは false です。開発者が送信メッセージのバッチ処理が許可されていることを示した場合、開発者は flushBatch() を呼び出して、この RemoteEndpoint の send メソッドに渡されたすべてのメッセージが確実に送信されるようにする必要があります。バッチ処理が許可されている場合、メッセージがローカルバッチに書き込まれていれば、実装の送信操作は完了したと見なされ、メッセージ用のスペースがまだバッチにある場合は完了したと見なされ、バッチにメッセージを書き込むときにバッチを送信する必要がある場合は、ピアに送信され、残りが新しいバッチに書き込まれます。ブロッキングメソッドと非同期送信メソッドは、ブロッキング呼び出しを完了し、SendHandlers に通知し、Futures を完了するために、この完了の概念を使用します。バッチ処理が許可されている場合、開発者が flushBatch() を呼び出さずにこの RemoteEndpoint の send メソッドを呼び出した場合、実装は開発者が送信を要求したすべてのメッセージを送信していない可能性があります。パラメーター値が false で、実装に未送信メッセージのバッチがある場合、実装はすぐに未送信メッセージのバッチを送信する必要があります。- パラメーター:
allowed
- 実装がメッセージのバッチ処理を許可されているかどうか。- 例外:
IOExceptionSE
- バッチ処理が無効になっていて未送信のメッセージがある場合、問題があると実装が未送信のメッセージのバッチを送信するため、このエラーがスローされる可能性があります。
getBatchingAllowed
boolean getBatchingAllowed()
実装が送信前に送信メッセージをバッチ処理できるかどうかを返します。RemoteEndpoints のデフォルトモードは false です。setBatchingAllowed
を呼び出すことにより、値を変更できます。- 戻り値:
- 実装が送信前に送信メッセージをバッチ処理できる場合は
true
、それ以外の場合はfalse
flushBatch
void flushBatch() throws IOExceptionSE
この方法は、この RemoteEndpint でバッチ処理が許可されている場合にのみ使用されます。このメソッドを呼び出すと、実装はバッチ処理されている未送信のメッセージを送信します。- 例外:
IOExceptionSE
- 未送信のメッセージの送信に失敗した場合
sendPing
void sendPing(ByteBufferSE applicationData) throws IOExceptionSE, IllegalArgumentExceptionSE
指定されたアプリケーションデータを含む Ping メッセージをリモートエンドポイントに送信します。対応する Pong メッセージは、MessageHandler.Pong ハンドラーを使用して取得できます。このメッセージの送信が完了するまで、他のスレッドが ByteBuffer を使用することは安全ではありません。メッセージの送信が正常に完了すると、バッファーの制限は変更されず、バッファーの位置は制限と等しくなります。メッセージの送信が正常に完了しない場合、バッファの状態は未定義です。
- パラメーター:
applicationData
- ping リクエストで運ばれるデータ。- 例外:
IOExceptionSE
- ping の送信に失敗した場合IllegalArgumentExceptionSE
- applicationData が最大許容ペイロード 125 バイトを超える場合
sendPong
void sendPong(ByteBufferSE applicationData) throws IOExceptionSE, IllegalArgumentExceptionSE
開発者が、セッションの単方向ハートビートとして機能するために、指定されたアプリケーションデータを含む一方的な Pong メッセージを送信できるようにします。このメッセージの送信が完了するまで、他のスレッドが ByteBuffer を使用することは安全ではありません。メッセージの送信が正常に完了すると、バッファーの制限は変更されず、バッファーの位置は制限と等しくなります。メッセージの送信が正常に完了しない場合、バッファの状態は未定義です。
- パラメーター:
applicationData
- ポンレスポンスで運ばれるアプリケーションデータ。- 例外:
IOExceptionSE
- ポンが送信されなかった場合IllegalArgumentExceptionSE
- applicationData が最大許容ペイロード 125 バイトを超える場合