- 类型参数:
T- 推送承诺响应主体类型
- 封闭接口:
HttpResponse<T>
A 推动承诺是 HTTP/2 服务在检索发起的客户端发送的请求时发送的合成请求。服务可能通过检查发起请求确定客户端可能需要承诺的资源,因此以推送承诺的形式向客户端推送合成推送请求。客户端可以选择接受或拒绝推送承诺请求。
推送承诺请求可能会被接收到发起客户端发送的请求的响应主体已被完全接收到的程度。然而,推送承诺响应的交付与对发起客户端发送的请求的响应的交付并不协调。
- 自从:
- 11
-
方法总结
修饰符和类型方法描述voidapplyPushPromise(HttpRequest initiatingRequest, HttpRequest pushPromiseRequest, Function<HttpResponse.BodyHandler<T>, CompletableFuture<HttpResponse<T>>> acceptor) 传入推送承诺的通知。static <T> HttpResponse.PushPromiseHandler<T>of(Function<HttpRequest, HttpResponse.BodyHandler<T>> pushPromiseHandler, ConcurrentMap<HttpRequest, CompletableFuture<HttpResponse<T>>> pushPromisesMap) 返回一个推送承诺处理程序,该处理程序将推送承诺及其响应累积到给定的map中。
-
方法详情
-
applyPushPromise
void applyPushPromise(HttpRequest initiatingRequest, HttpRequest pushPromiseRequest, Function <HttpResponse.BodyHandler <T >, CompletableFuture <HttpResponse <T >>> acceptor) 传入推送承诺的通知。对于收到的每个推送承诺,都会调用一次此方法,直到完全收到发起客户端发送的请求的响应主体为止。
通过调用给定的
acceptor函数接受推送承诺。acceptor函数必须传递一个非空的BodyHandler,用于处理承诺的响应主体。 acceptor 函数将返回一个CompletableFuture完成承诺的响应。如果
acceptor函数未成功调用,则推送承诺将被拒绝。如果多次调用acceptor函数将抛出IllegalStateException。- 参数:
initiatingRequest- 发起客户端发送请求pushPromiseRequest- 合成推送请求acceptor- 必须成功调用才能接受推送承诺的接受器函数
-
of
static <T> HttpResponse.PushPromiseHandler <T> of(Function <HttpRequest , HttpResponse.BodyHandler <T>> pushPromiseHandler, ConcurrentMap <HttpRequest , CompletableFuture <HttpResponse <T>>> pushPromisesMap) 返回一个推送承诺处理程序,该处理程序将推送承诺及其响应累积到给定的map中。对于接受的每个推送承诺,条目都会添加到给定的map中。条目的键是推送请求,条目的值是一个
CompletableFuture,它以对应于键的推送请求的响应完成。如果map中已经有一个键为equal的条目,则推送请求将被拒绝/取消。如果推送请求与其发起请求的来源不同,则该推送请求将被拒绝/取消。当收到并接受推送承诺时,条目会尽快添加到给定的map中。这样,使用像缓存这样的映射的代码可以确定服务是否已发出推送承诺,并避免发出可能不必要的请求。
推送承诺响应的交付与对发起客户端发送的请求的响应的交付不协调。然而,当发起客户端发送的请求的响应主体已被完全接收时,映射将保证完全填充,即不会添加更多条目。map中包含的个人
CompletableFutures此时可能已经完成,也可能尚未完成。- 类型参数:
T- 推送承诺响应主体类型- 参数:
pushPromiseHandler- 用于推送承诺的主体处理程序pushPromisesMap- 用于累积推送承诺的map- 返回:
- 推送承诺处理程序
-