类org.springframework.http.server.ServerHttpAsyncRequestControl源码实例Demo

下面列出了怎么用org.springframework.http.server.ServerHttpAsyncRequestControl的API类实例代码及写法,或者点击链接到github查看源代码。

/**
 * Handle all requests, except the first one, to receive messages on a SockJS
 * HTTP transport based session.
 * <p>Long polling-based transports (e.g. "xhr", "jsonp") complete the request
 * after writing any buffered message frames (or the next one). Streaming-based
 * transports ("xhr_streaming", "eventsource", and "htmlfile") leave the
 * response open longer for further streaming of message frames but will also
 * close it eventually after some amount of data has been sent.
 * @param request the current request
 * @param response the current response
 * @param frameFormat the transport-specific SocksJS frame format to use
 */
public void handleSuccessiveRequest(ServerHttpRequest request, ServerHttpResponse response,
		SockJsFrameFormat frameFormat) throws SockJsException {

	synchronized (this.responseLock) {
		try {
			if (isClosed()) {
				response.getBody().write(SockJsFrame.closeFrameGoAway().getContentBytes());
				return;
			}
			this.response = response;
			this.frameFormat = frameFormat;
			ServerHttpAsyncRequestControl control = request.getAsyncRequestControl(response);
			this.asyncRequestControl = control;
			control.start(-1);
			disableShallowEtagHeaderFilter(request);
			handleRequestInternal(request, response, false);
			this.readyToSend = isActive();
		}
		catch (Throwable ex) {
			tryCloseWithSockJsTransportError(ex, CloseStatus.SERVER_ERROR);
			throw new SockJsTransportFailureException("Failed to handle SockJS receive request", getId(), ex);
		}
	}
}
 
protected void resetRequest() {
	synchronized (this.responseLock) {
		ServerHttpAsyncRequestControl control = this.asyncRequestControl;
		this.asyncRequestControl = null;
		this.readyToSend = false;
		this.response = null;
		updateLastActiveTime();
		if (control != null && !control.isCompleted() && control.isStarted()) {
			try {
				control.complete();
			}
			catch (Throwable ex) {
				// Could be part of normal workflow (e.g. browser tab closed)
				logger.debug("Failed to complete request: " + ex.getMessage());
			}
		}
	}
}
 
/**
 * Handle all requests, except the first one, to receive messages on a SockJS
 * HTTP transport based session.
 * <p>Long polling-based transports (e.g. "xhr", "jsonp") complete the request
 * after writing any buffered message frames (or the next one). Streaming-based
 * transports ("xhr_streaming", "eventsource", and "htmlfile") leave the
 * response open longer for further streaming of message frames but will also
 * close it eventually after some amount of data has been sent.
 * @param request the current request
 * @param response the current response
 * @param frameFormat the transport-specific SocksJS frame format to use
 */
public void handleSuccessiveRequest(ServerHttpRequest request, ServerHttpResponse response,
		SockJsFrameFormat frameFormat) throws SockJsException {

	synchronized (this.responseLock) {
		try {
			if (isClosed()) {
				response.getBody().write(SockJsFrame.closeFrameGoAway().getContentBytes());
				return;
			}
			this.response = response;
			this.frameFormat = frameFormat;
			ServerHttpAsyncRequestControl control = request.getAsyncRequestControl(response);
			this.asyncRequestControl = control;
			control.start(-1);
			disableShallowEtagHeaderFilter(request);
			handleRequestInternal(request, response, false);
			this.readyToSend = isActive();
		}
		catch (Throwable ex) {
			tryCloseWithSockJsTransportError(ex, CloseStatus.SERVER_ERROR);
			throw new SockJsTransportFailureException("Failed to handle SockJS receive request", getId(), ex);
		}
	}
}
 
protected void resetRequest() {
	synchronized (this.responseLock) {
		ServerHttpAsyncRequestControl control = this.asyncRequestControl;
		this.asyncRequestControl = null;
		this.readyToSend = false;
		this.response = null;
		updateLastActiveTime();
		if (control != null && !control.isCompleted() && control.isStarted()) {
			try {
				control.complete();
			}
			catch (Throwable ex) {
				// Could be part of normal workflow (e.g. browser tab closed)
				logger.debug("Failed to complete request: " + ex.getMessage());
			}
		}
	}
}
 
protected void resetRequest() {
	synchronized (this.responseLock) {

		ServerHttpAsyncRequestControl control = this.asyncRequestControl;
		this.asyncRequestControl = null;
		this.readyToSend = false;
		this.response = null;

		updateLastActiveTime();

		if (control != null && !control.isCompleted()) {
			if (control.isStarted()) {
				try {
					control.complete();
				}
				catch (Throwable ex) {
					// Could be part of normal workflow (e.g. browser tab closed)
					logger.debug("Failed to complete request: " + ex.getMessage());
				}
			}
		}
	}
}
 
@Override
public boolean isActive() {
	ServerHttpAsyncRequestControl control = this.asyncRequestControl;
	return (control != null && !control.isCompleted());
}
 
@Override
public boolean isActive() {
	ServerHttpAsyncRequestControl control = this.asyncRequestControl;
	return (control != null && !control.isCompleted());
}
 
@Override
public boolean isActive() {
	ServerHttpAsyncRequestControl control = this.asyncRequestControl;
	return (control != null && !control.isCompleted());
}
 
 类所在包
 同包方法