Интерфейс HttpResponse.PushPromiseHandler<T>
- Параметры типа:
-
T- тип тела ответа на запрос push promise
- Охватываемый интерфейс:
HttpResponse<T>
public static interface HttpResponse.PushPromiseHandler<T>
Push promise — это синтетический запрос, отправляемый сервером HTTP/2 при получении начального запроса от клиента. Сервер, возможно, на основе анализа начального запроса, определяет, что клиенту, скорее всего, потребуется запрошенная ресурс, и поэтому отправляет синтетический запрос push promise клиенту. Клиент может принять или отклонить запрос push promise.
Запрос push promise может быть получен до момента, пока полностью не будет получено тело ответа на начальный запрос клиента. Однако доставка ответа на push promise не координируется с доставкой ответа на начальный запрос клиента.
- С:
- 11
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
applyPushPromise |
Уведомление о входящем push promise. |
static <T> HttpResponse.PushPromiseHandler |
of |
Возвращает обработчик push promise, который накапливает push promise и их ответы в заданную карту. |
Подробное описание методов
applyPushPromise
void applyPushPromise(HttpRequest initiatingRequest, HttpRequest pushPromiseRequest, Function<HttpResponse.BodyHandler<T>,CompletableFuture<HttpResponse<T>>> acceptor)
Этот метод вызывается один раз для каждого полученного push promise, до тех пор, пока полностью не будет получено тело ответа на начальный запрос клиента.
Push promise принимается путем вызова переданной acceptor функции. Функция acceptor должна принимать непустую BodyHandler, которая используется для обработки тела ответа promise. Функция-акцептор вернет
CompletableFuture, который завершится с ответом promise.
Если функция acceptor не будет успешно вызвана, push promise отклоняется. Функция acceptor будет выбрасывать IllegalStateException, если вызывается более одного раза.
- Параметры:
-
initiatingRequest- начальный запрос клиента -
pushPromiseRequest- синтетический запрос push -
acceptor- функция-акцептор, которая должна быть успешно вызвана для принятия push promise
of
static <T> HttpResponse.PushPromiseHandler<T> of(Function<HttpRequest,HttpResponse.BodyHandler<T>> pushPromiseHandler, ConcurrentMap<HttpRequest,CompletableFuture<HttpResponse<T>>> pushPromisesMap)
Записи добавляются в заданную карту для каждого принятого push promise. Ключом записи является запрос push, а значением — CompletableFuture, который завершается ответом, соответствующим запросу push в качестве ключа. Запрос push отклоняется/отменяется, если в карте уже есть запись, ключ которой равен ему. Запрос push отклоняется/отменяется, если у него нет того же происхождения, что и у инициализирующего запроса.
Записи добавляются в заданную карту как можно скорее при получении и принятии push promise. Таким образом, код, использующий такую карту как кэш, может определить, был ли push promise выпущен сервером, и избежать выполнения, возможно, ненужных запросов.
Доставка ответа push promise не координируется с доставкой ответа на начальный запрос клиента. Однако, когда тело ответа на начальный запрос клиента полностью получено, гарантируется, что карта полностью заполнена, то есть больше записей не будет добавлено. Отдельные CompletableFutures в карте могут быть или не быть завершенными на этом этапе.
- Параметры типа:
-
T- тип тела ответа на push promise - Параметры:
-
pushPromiseHandler- обработчик тела для push promise -
pushPromisesMap- карта для накопления push promise - Возвращает:
- обработчик push promise
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.net.http/java/net/http/HttpResponse.PushPromiseHandler.html