类 ResponseBodyEmitter

java.lang.Object
cn.taketoday.web.handler.method.ResponseBodyEmitter
直接已知子类:
SseEmitter

public class ResponseBodyEmitter extends Object
A controller method return value type for asynchronous request processing where one or more objects are written to the response.

While DeferredResult is used to produce a single result, a ResponseBodyEmitter can be used to send multiple objects where each object is written with a compatible HttpMessageConverter.

Supported as a return type on its own as well as within a ResponseEntity.

 @GET("/stream")
 public ResponseBodyEmitter handle() {
           ResponseBodyEmitter emitter = new ResponseBodyEmitter();
           // Pass the emitter to another component...
           return emitter;
 }

 // in another thread
 emitter.send(foo1);

 // and again
 emitter.send(foo2);

 // and done
 emitter.complete();
 
从以下版本开始:
4.0 2022/4/8 23:54
作者:
Rossen Stoyanchev, Juergen Hoeller, Harry Yang
  • 字段详细资料

  • 构造器详细资料

    • ResponseBodyEmitter

      public ResponseBodyEmitter()
      Create a new ResponseBodyEmitter instance.
    • ResponseBodyEmitter

      public ResponseBodyEmitter(Long timeout)
      Create a ResponseBodyEmitter with a custom timeout value.

      By default not set in which case the default configured in the MVC Java Config or the MVC namespace is used, or if that's not set, then the timeout depends on the default of the underlying server.

      参数:
      timeout - the timeout value in milliseconds
  • 方法详细资料

    • getTimeout

      @Nullable public Long getTimeout()
      Return the configured timeout value, if any.
    • initialize

      void initialize(ResponseBodyEmitter.Handler handler) throws IOException
      抛出:
      IOException
    • initializeWithError

      void initializeWithError(Throwable ex)
    • extendResponse

      protected void extendResponse(RequestContext outputMessage)
      Invoked after the response is updated with the status code and headers, if the ResponseBodyEmitter is wrapped in a ResponseEntity, but before the response is committed, i.e. before the response body has been written to.

      The default implementation is empty.

    • send

      public void send(Object object) throws IOException
      Write the given object to the response.

      If any exception occurs a dispatch is made back to the app server where Web MVC will pass the exception through its exception handling mechanism.

      Note: if the send fails with an IOException, you do not need to call completeWithError(Throwable) in order to clean up. Instead the Servlet container creates a notification that results in a dispatch where Web MVC invokes exception resolvers and completes processing.

      参数:
      object - the object to write
      抛出:
      IOException - raised when an I/O error occurs
      IllegalStateException - wraps any other errors
    • send

      public void send(Object object, @Nullable MediaType mediaType) throws IOException
      Overloaded variant of send(Object) that also accepts a MediaType hint for how to serialize the given Object.
      参数:
      object - the object to write
      mediaType - a MediaType hint for selecting an HttpMessageConverter
      抛出:
      IOException - raised when an I/O error occurs
      IllegalStateException - wraps any other errors
    • send

      Write a set of data and MediaType pairs in a batch.

      Compared to send(Object, MediaType), this batches the write operations and flushes to the network at the end.

      参数:
      items - the object and media type pairs to write
      抛出:
      IOException - raised when an I/O error occurs
      IllegalStateException - wraps any other errors
    • sendInternal

      private void sendInternal(Collection<ResponseBodyEmitter.DataWithMediaType> items) throws IOException
      抛出:
      IOException
    • complete

      public void complete()
      Complete request processing by performing a dispatch into the servlet container, where Web MVC is invoked once more, and completes the request processing lifecycle.

      Note: this method should be called by the application to complete request processing. It should not be used after container related events such as an error while sending.

    • completeWithError

      public void completeWithError(Throwable ex)
      Complete request processing with an error.

      A dispatch is made into the app server where Web MVC will pass the exception through its exception handling mechanism. Note however that at this stage of request processing, the response is committed and the response status can no longer be changed.

      Note: this method should be called by the application to complete request processing with an error. It should not be used after container related events such as an error while sending.

    • onTimeout

      public void onTimeout(Runnable callback)
      Register code to invoke when the async request times out. This method is called from a container thread when an async request times out.
    • onError

      public void onError(Consumer<Throwable> callback)
      Register code to invoke for an error during async request processing. This method is called from a container thread when an error occurred while processing an async request.
    • onCompletion

      public void onCompletion(Runnable callback)
      Register code to invoke when the async request completes. This method is called from a container thread when an async request completed for any reason including timeout and network error. This method is useful for detecting that a ResponseBodyEmitter instance is no longer usable.
    • toString

      public String toString()
      覆盖:
      toString 在类中 Object