パッケージ jakarta.websocket
クラス Endpoint
- java.lang.ObjectSE
-
- jakarta.websocket.Endpoint
public abstract class Endpoint extends ObjectSE
Web ソケットエンドポイントは、WebSocket 会話を処理できるオブジェクトを表します。開発者は、プログラムによる WebSocket エンドポイントを実装するために、このクラスを継承できます。Endpoint クラスは、WebSocket のオープン、エラー、クローズのイベントをインターセプトするためにオーバーライドできるライフサイクルメソッドを保持します。onOpen
メソッドを実装することで、プログラムエンドポイントはSession
オブジェクトにアクセスできます。開発者は、MessageHandler
実装を追加して、受信 WebSocket メッセージをインターセプトすることができます。WebSocket エンドポイントの各インスタンスは、アクティブな接続ごとに一度に複数のスレッドによって呼び出されないことが保証されています。クライアントエンドポイントとしてデプロイされた場合、サーバーへの単一接続のために 1 回インスタンス化されます。
サーバーエンドポイントとしてデプロイされると、実装は
jakarta.websocket.server.ServerEndpointConfig.Configurator#getEndpointInstance
メソッドを使用して、新しいクライアント接続ごとに使用するエンドポイントインスタンスを取得します。開発者がデフォルトのjakarta.websocket.server.ServerEndpointConfig.Configurator
を使用する場合、アクティブなクライアント接続ごとに正確に 1 つのエンドポイントインスタンスが存在します。この典型的なケースでは、Endpoint のメソッドを実装 / オーバーライドするときに、開発者は各エンドポイントインスタンスを一度に呼び出すスレッドが最大で 1 つあることが保証されます。たとえば、複数のクライアント接続に単一のエンドポイントインスタンスを使用するなど、エンドポイントインスタンス作成のデフォルトポリシーを上書きするカスタム
jakarta.websocket.server.ServerEndpointConfig.Configurator
を開発者が提供する場合、開発者は同時に実行できるコードを記述する必要がある場合があります。これは、受信テキストメッセージを送信者にエコーバックする単純なエンドポイントの例です。
public class EchoServer extends Endpoint { public void onOpen(Session session, EndpointConfig config) { final RemoteEndpoint remote = session.getBasicRemote(); session.addMessageHandler(String.class, new MessageHandler.Whole<String<() { public void onMessage(String text) { try { remote.sendString("Got your message (" + text + "). Thanks !"); } catch (IOException ioe) { // handle send failure here } } }); } }
- 作成者:
- dannycoward
コンストラクターのサマリー
コンストラクター コンストラクター 説明 Endpoint()
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 具象メソッド 修飾子と型 メソッド 説明 void
onClose(Session session, CloseReason closeReason)
このメソッドは、リモートピアが閉じられているセッションの直前に呼び出されます。void
onError(Session session, ThrowableSE thr)
開発者は、Web ソケットセッションが Web ソケットプロトコルでモデル化されていないある種のエラーを作成するときに、このメソッドを実装できます。abstract void
onOpen(Session session, EndpointConfig config)
開発者はこのメソッドを実装して、新しい会話が始まったときに通知を受けるようにする必要があります。
メソッドの詳細
onOpen
public abstract void onOpen(Session session, EndpointConfig config)
開発者はこのメソッドを実装して、新しい会話が始まったときに通知を受けるようにする必要があります。注:
- このメソッドからメッセージを送信することは許可されています。
- このメソッドから
MessageHandler
を追加することが許可されています。このメソッドが完了するまで、メッセージは適切なMessageHandler
にマップされません。
- パラメーター:
session
- アクティブ化されたばかりのセッション。config
- このエンドポイントの構成に使用される構成。
onClose
public void onClose(Session session, CloseReason closeReason)
このメソッドは、リモートピアが閉じられているセッションの直前に呼び出されます。これは、リモートピアがクローズを開始してクローズフレームを送信したためにセッションがクローズされているか、ローカルの WebSocket コンテナーまたはこのエンドポイントがセッションのクローズをリクエストしているかに関係なく呼び出されます。開発者は、この最後の機会を利用して、ID などのセッション属性や、メソッドの完了後に使用できなくなる前に保持しているアプリケーションデータを取得できます。開発者は、このメソッド内からセッションを変更したり、この呼び出しから新しいメッセージを送信したりしないでください。基礎となる接続は、この段階ではメッセージを送信できません。- パラメーター:
session
- 間もなく終了するセッション。closeReason
- セッションが閉じられた理由。
onError
public void onError(Session session, ThrowableSE thr)
開発者は、Web ソケットセッションが Web ソケットプロトコルでモデル化されていないある種のエラーを作成するときに、このメソッドを実装できます。これは、たとえば、受信メッセージが大きすぎて処理できない、受信メッセージをエンコードできないという通知である可能性があります。このメソッドが(現在のところ)処理するように定義されている例外には、いくつかのカテゴリがあります。
- 接続の問題。たとえば、Web ソケット接続を正式に閉じる前に発生するソケット障害。これらは
SessionException
としてモデル化されています - 開発者が作成したメッセージハンドラー呼び出しによってスローされるランタイムエラー。
- メッセージハンドラーが呼び出される前に受信メッセージをエンコードする変換エラー。これらは
DecodeException
としてモデル化されています
- パラメーター:
session
- エラーが発生したときに使用中のセッション。thr
- 問題を表すスロー可能オブジェクト。
- 接続の問題。たとえば、Web ソケット接続を正式に閉じる前に発生するソケット障害。これらは