|
|
|
@ -21,12 +21,14 @@ import java.security.Principal; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
import java.util.function.Consumer; |
|
|
|
|
|
|
|
|
|
|
|
import jakarta.servlet.ServletContext; |
|
|
|
import jakarta.servlet.ServletContext; |
|
|
|
import jakarta.servlet.http.HttpServletRequest; |
|
|
|
import jakarta.servlet.http.HttpServletRequest; |
|
|
|
import jakarta.servlet.http.HttpServletResponse; |
|
|
|
import jakarta.servlet.http.HttpServletResponse; |
|
|
|
import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketCreator; |
|
|
|
import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketCreator; |
|
|
|
import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketServerContainer; |
|
|
|
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.ServerHttpRequest; |
|
|
|
import org.springframework.http.server.ServerHttpResponse; |
|
|
|
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.http.server.ServletServerHttpResponse; |
|
|
|
import org.springframework.lang.Nullable; |
|
|
|
import org.springframework.lang.Nullable; |
|
|
|
import org.springframework.util.Assert; |
|
|
|
import org.springframework.util.Assert; |
|
|
|
|
|
|
|
import org.springframework.web.context.ServletContextAware; |
|
|
|
import org.springframework.web.socket.WebSocketExtension; |
|
|
|
import org.springframework.web.socket.WebSocketExtension; |
|
|
|
import org.springframework.web.socket.WebSocketHandler; |
|
|
|
import org.springframework.web.socket.WebSocketHandler; |
|
|
|
import org.springframework.web.socket.adapter.jetty.JettyWebSocketHandlerAdapter; |
|
|
|
import org.springframework.web.socket.adapter.jetty.JettyWebSocketHandlerAdapter; |
|
|
|
@ -47,11 +50,15 @@ import org.springframework.web.socket.server.RequestUpgradeStrategy; |
|
|
|
* @author Rossen Stoyanchev |
|
|
|
* @author Rossen Stoyanchev |
|
|
|
* @since 5.3.4 |
|
|
|
* @since 5.3.4 |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy { |
|
|
|
public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, ServletContextAware { |
|
|
|
|
|
|
|
|
|
|
|
private static final String[] SUPPORTED_VERSIONS = new String[] {"13"}; |
|
|
|
private static final String[] SUPPORTED_VERSIONS = new String[] {"13"}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Nullable |
|
|
|
|
|
|
|
private Consumer<Configurable> webSocketConfigurer; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public String[] getSupportedVersions() { |
|
|
|
public String[] getSupportedVersions() { |
|
|
|
return SUPPORTED_VERSIONS; |
|
|
|
return SUPPORTED_VERSIONS; |
|
|
|
@ -62,6 +69,24 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy { |
|
|
|
return Collections.emptyList(); |
|
|
|
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 |
|
|
|
@Override |
|
|
|
public void upgrade(ServerHttpRequest request, ServerHttpResponse response, |
|
|
|
public void upgrade(ServerHttpRequest request, ServerHttpResponse response, |
|
|
|
|