クラス HttpTunnelServer

java.lang.ObjectSE
org.springframework.boot.devtools.tunnel.server.HttpTunnelServer

public class HttpTunnelServer extends ObjectSE
HTTP 経由で TCP トラフィックをトンネリングするために使用できるサーバー。同期 HTTP を介した双方向ストリーム (BOSH) XMPP 拡張プロトコルの設計と同様に、サーバーは、レスポンスが利用可能になるまで HTTP リクエストを開いたままにして、長いポーリングを使用します。一般的なトラフィックパターンは次のとおりです。
 [ CLIENT ]                      [ SERVER ]
     | (a) Initial empty request     |
     |------------------------------>|
     | (b) Data I                    |
  -->|------------------------------>|--->
     | Response I (a)                |
  <--|<------------------------------|<---
     |                               |
     | (c) Data II                   |
  -->|------------------------------>|--->
     | Response II (b)               |
  <--|<------------------------------|<---
     .                               .
     .                               .
 
各受信リクエストは、次に使用可能なレスポンスを運ぶために使用されるために開いたままになります。サーバーは常に最大 2 つの接続を開いたままにします。

リクエストは HTTP GET または POST(ペイロードがあるかどうかに応じて)を使用して作成し、ペイロードは本文に含まれている必要があります。以下のレスポンスコードがサーバーから返される可能性があります。

レスポンスコード
ステータス 意味
200 (OK) データペイロードレスポンス。
204 (コンテンツなし) ロングポーリングがタイムアウトしました。クライアントは新しいリクエストを開始する必要があります。
429 (リクエストが多すぎます) すでに十分な数の接続が開いています。これは削除できます。
410 (なくなった) ターゲットサーバーが切断されました。
503 (使用不可のサービス) ターゲットサーバーが利用できません

ペイロードを含むリクエストとレスポンスには、実行中のシーケンス番号を含む x-seq ヘッダーが含まれます(データが正しい順序で適用されるようにするために使用されます)。ペイロードを含む最初のリクエストには、x-seq 値 1 が必要です。

導入:
1.3.0
作成者:
Phillip Webb, Andy Wilkinson
関連事項:
  • コンストラクターの詳細

    • HttpTunnelServer

      public HttpTunnelServer(TargetServerConnection serverConnection)
      新しい HttpTunnelServer インスタンスを作成します。
      パラメーター:
      serverConnection - ターゲットサーバーへの接続
  • メソッドの詳細

    • handle

      public void handle(ServerHttpRequest request, ServerHttpResponse response) throws IOExceptionSE
      受信 HTTP 接続を処理します。
      パラメーター:
      request - HTTP リクエスト
      response - HTTP レスポンス
      例外:
      IOExceptionSE - I/O エラーの場合
    • handle

      protected void handle(HttpTunnelServer.HttpConnection httpConnection) throws IOExceptionSE
      受信 HTTP 接続を処理します。
      パラメーター:
      httpConnection - HTTP 接続
      例外:
      IOExceptionSE - I/O エラーの場合
    • getServerThread

      protected HttpTunnelServer.ServerThread getServerThread() throws IOExceptionSE
      アクティブなサーバースレッドを返し、必要に応じて作成および開始します。
      戻り値:
      ServerThread (非 null)
      例外:
      IOExceptionSE - I/O エラーの場合
    • setLongPollTimeout

      public void setLongPollTimeout(int longPollTimeout)
      サーバーの長いポーリングタイムアウトを設定します。
      パラメーター:
      longPollTimeout - ミリ秒単位の長いポーリングタイムアウト
    • setDisconnectTimeout

      public void setDisconnectTimeout(long disconnectTimeout)
      接続を閉じる前にクライアントを待機する最大時間を設定します。
      パラメーター:
      disconnectTimeout - ミリ秒単位の切断タイムアウト