4.6. HTTP の変更点

本セクションでは、HTTP メソッドの変更点を説明します。

4.6.1. Eclipse Vert.x HTTP メソッドにおける一般的な更新

以下のセクションでは、Eclipse Vert.x HTTP メソッドにおけるその他の更新を説明します。

4.6.1.1. WebSocketの HTTP メソッドの更新

WebSocket の変更点は次のとおりです。

  • メソッド名で WebSocket という用語の使用に一貫性がありませんでした。メソッド名に、WebSocket ではなく Websocket などの誤った大文字が含まれていました。以下のクラスで WebSocket の使用に一貫性のないメソッドが削除されました。代わりに正しい大文字を持つ新しいメソッドを使用してください。

    • HttpServerOptions クラスの 以下のメソッドが削除されました。

      削除されたメソッド新しいメソッド

      getMaxWebsocketFrameSize()

      getMaxWebSocketFrameSize()

      setMaxWebsocketFrameSize()

      setMaxWebSocketFrameSize()

      getMaxWebsocketMessageSize()

      getMaxWebSocketMessageSize()

      setMaxWebsocketMessageSize()

      setMaxWebSocketMessageSize()

      getPerFrameWebsocketCompressionSupported()

      getPerFrameWebSocketCompressionSupported()

      setPerFrameWebsocketCompressionSupported()

      setPerFrameWebSocketCompressionSupported()

      getPerMessageWebsocketCompressionSupported()

      getPerMessageWebSocketCompressionSupported()

      setPerMessageWebsocketCompressionSupported()

      setPerMessageWebSocketCompressionSupported()

      getWebsocketAllowServerNoContext()

      getWebSocketAllowServerNoContext()

      setWebsocketAllowServerNoContext()

      setWebSocketAllowServerNoContext()

      getWebsocketCompressionLevel()

      getWebSocketCompressionLevel()

      setWebsocketCompressionLevel()

      setWebSocketCompressionLevel()

      getWebsocketPreferredClientNoContext()

      getWebSocketPreferredClientNoContext()

      setWebsocketPreferredClientNoContext()

      setWebSocketPreferredClientNoContext()

      getWebsocketSubProtocols()

      getWebSocketSubProtocols()

      setWebsocketSubProtocols()

      setWebSocketSubProtocols()

      WebSocket サブプロトコルの新しいメソッドは、項目を保存するためにコンマ区切りの文字列の代わりに List<String> データ型を使用します。

    • HttpClientOptions クラスの以下のメソッドが削除されました。

      削除されたメソッド置き換えメソッド

      getTryUsePerMessageWebsocketCompression()

      getTryUsePerMessageWebSocketCompression()

      setTryUsePerMessageWebsocketCompression()

      setTryUsePerMessageWebSocketCompression()

      getTryWebsocketDeflateFrameCompression()

      getTryWebSocketDeflateFrameCompression()

      getWebsocketCompressionAllowClientNoContext()

      getWebSocketCompressionAllowClientNoContext()

      setWebsocketCompressionAllowClientNoContext()

      setWebSocketCompressionAllowClientNoContext()

      getWebsocketCompressionLevel()

      getWebSocketCompressionLevel()

      setWebsocketCompressionLevel()

      setWebSocketCompressionLevel()

      getWebsocketCompressionRequestServerNoContext()

      getWebSocketCompressionRequestServerNoContext()

      setWebsocketCompressionRequestServerNoContext()

      setWebSocketCompressionRequestServerNoContext()

    • HttpServer クラスの 以下のハンドラーメソッドが削除されました。

      非推奨となったメソッド新しいメソッド

      websocketHandler()

      webSocketHandler()

      websocketStream()

      webSocketStream()

  • WebsocketRejectedException は非推奨になりました。メソッドは、代わりに UpgradeRejectedException を出力します。
  • HttpClient web Socket() メソッドは、Handler または Handler< Throwable> の代わりに Handler <AsyncResult<WebSocket>& gt; を使用します。
  • また、WebSocket ConnectOptions クラスのメソッドを使用して、HTTP クライアントを WebSocket に接続するオーバーロードされたメソッドの数も削減されました。
  • HttpServerRequest.upgrade() メソッドが削除されました。このメソッドは同期的でした。

    代わりに、新しいメソッド HttpServerRequest.toWebSocket() を使用してください。この新しいメソッドは非同期的です。

    以下の例は、Eclipse Vert.x 3.x での同期メソッドの使用を示しています。

    // 3.x
    server.requestHandler(req -> {
      WebSocket ws = req.upgrade();
    });

    以下の例は、Eclipse Vert.x 4 での非同期メソッドの使用を示しています。

    // 4.x
    server.requestHandler(req -> {
      Future<WebSocket> fut = req.toWebSocket();
      fut.onSuccess(ws -> {
      });
    });

4.6.1.2. WebSocket 接続の数の設定

Eclipse Vert.x 3.x では、HTTP クライアントプールサイズを使用してアプリケーションで WebSocket 接続の最大数を定義することができます。値アクセサーメソッド HttpClientOptions.maxPoolSize() は、WebSocket 接続の取得および設定に使用されました。デフォルトの接続数は、エンドポイントごとに 4 に設定されていました。

以下の例は、Eclipse Vert.x 3.x で WebSocket 接続が設定される方法を示しています。

// 3.x
options.setMaxPoolSize(30); // Maximum connection is set to 30 for each endpoint

ただし、Eclipse Vert.x 4 では、使用後に接続が閉じられるため、WebSocket TCP 接続のプールはありません。アプリケーションは、HTTP リクエストに異なるプールを使用します。値アクセサーメソッド HttpClientOptions.maxWebSockets() を使用して WebSocket 接続を取得および設定します。デフォルトの接続数は、エンドポイントごとに 50 に設定されます。

以下の例は、Eclipse Vert.x 4 で WebSocket 接続を設定する方法を示しています。

// 4.x
options.setMaxWebSockets(30); // Maximum connection is set to 30 for each endpoint

4.6.1.3. HttpMethod がインターフェースとして利用可能

HttpMethod は新しいインターフェースとして利用できます。

以前のリリースの Eclipse Vert.x では、HttpMethod は列挙データ型として宣言されていました。列挙として、HTTP の拡張性が制限されます。さらに、このタイプの他の HTTP メソッドを直接提供できませんでした。サーバーおよびクライアントの HTTP 要求時に、HttpMethod.OTHER の値を rawMethod 属性と共に使用する必要がありました。

スイッチ ブロックで HttpMethod 列挙データ型を使用している場合は、以下のコードを使用してアプリケーションを Eclipse Vert.x 4 に移行できます。

以下の例は、Eclipse Vert.x 3.x リリースの switch ブロックを示しています。

switch (method) {
  case GET:
    ...
    break;
  case OTHER:
    String s = request.getRawMethod();
    if (s.equals("PROPFIND") {
      ...
    } else ...
}

以下の例は、Eclipse Vert.x 4 の switch ブロックを示しています。

switch (method.name()) {
  case "GET":
    ...
    break;
  case "PROPFIND";
    ...
    break;
}

Eclipse Vert.x 4 で以下のコードを使用することもできます。

HttpMethod PROPFIND = HttpMethod.valueOf("PROPFIND");

if (method == HttpMethod.GET) {
  ...
} else if (method.equals(PROPFIND)) {
  ...
} else {
  ...
}

アプリケーションで HttpMethod.OTHER 値を使用している場合は、以下のコードを使用してアプリケーションを Eclipse Vert.x 4 に移行します。

以下の例は、Eclipse Vert.x 3.x リリースのコードを示しています。

client.request(HttpMethod.OTHER, ...).setRawName("PROPFIND");

以下の例は、Eclipse Vert.x 4 のコードを示しています。

client.request(HttpMethod.valueOf("PROPFIND"), ...);