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
webSocket()
メソッドは、Handler
またはHandler<Throwable>
の代わりにHandler<AsyncResult<WebSocket>>
を使用します。 -
また、
WebSocketConnectOptions
クラスのメソッドを使用して 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.0 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.0 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"), ...);