Support Jetty WebSocket server parameters
Closes gh-30344
This commit is contained in:
@@ -21,12 +21,14 @@ import java.security.Principal;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import jakarta.servlet.ServletContext;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketCreator;
|
||||
import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketServerContainer;
|
||||
import org.eclipse.jetty.websocket.api.Configurable;
|
||||
|
||||
import org.springframework.http.server.ServerHttpRequest;
|
||||
import org.springframework.http.server.ServerHttpResponse;
|
||||
@@ -34,6 +36,7 @@ import org.springframework.http.server.ServletServerHttpRequest;
|
||||
import org.springframework.http.server.ServletServerHttpResponse;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.web.context.ServletContextAware;
|
||||
import org.springframework.web.socket.WebSocketExtension;
|
||||
import org.springframework.web.socket.WebSocketHandler;
|
||||
import org.springframework.web.socket.adapter.jetty.JettyWebSocketHandlerAdapter;
|
||||
@@ -47,11 +50,15 @@ import org.springframework.web.socket.server.RequestUpgradeStrategy;
|
||||
* @author Rossen Stoyanchev
|
||||
* @since 5.3.4
|
||||
*/
|
||||
public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy {
|
||||
public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, ServletContextAware {
|
||||
|
||||
private static final String[] SUPPORTED_VERSIONS = new String[] {"13"};
|
||||
|
||||
|
||||
@Nullable
|
||||
private Consumer<Configurable> webSocketConfigurer;
|
||||
|
||||
|
||||
@Override
|
||||
public String[] getSupportedVersions() {
|
||||
return SUPPORTED_VERSIONS;
|
||||
@@ -62,6 +69,24 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a callback to configure WebSocket server parameters on
|
||||
* {@link JettyWebSocketServerContainer}.
|
||||
* @since 6.1.0
|
||||
*/
|
||||
public void addWebSocketConfigurer(Consumer<Configurable> webSocketConfigurer) {
|
||||
this.webSocketConfigurer = (this.webSocketConfigurer != null ?
|
||||
this.webSocketConfigurer.andThen(webSocketConfigurer) : webSocketConfigurer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setServletContext(ServletContext servletContext) {
|
||||
JettyWebSocketServerContainer container = JettyWebSocketServerContainer.getContainer(servletContext);
|
||||
if (container != null && this.webSocketConfigurer != null) {
|
||||
this.webSocketConfigurer.accept(container);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void upgrade(ServerHttpRequest request, ServerHttpResponse response,
|
||||
|
||||
Reference in New Issue
Block a user