parent
00aa40b8da
commit
261520cea0
|
|
@ -16,6 +16,16 @@
|
|||
|
||||
package org.springframework.web.socket.server.standard;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.websocket.Decoder;
|
||||
import javax.websocket.Encoder;
|
||||
import javax.websocket.Endpoint;
|
||||
import javax.websocket.Extension;
|
||||
|
||||
import io.undertow.server.HttpServerExchange;
|
||||
import io.undertow.server.HttpUpgradeListener;
|
||||
import io.undertow.servlet.api.InstanceFactory;
|
||||
|
|
@ -31,18 +41,11 @@ import io.undertow.websockets.jsr.EncodingFactory;
|
|||
import io.undertow.websockets.jsr.EndpointSessionHandler;
|
||||
import io.undertow.websockets.jsr.ServerWebSocketContainer;
|
||||
import io.undertow.websockets.jsr.handshake.HandshakeUtil;
|
||||
import org.xnio.StreamConnection;
|
||||
|
||||
import org.springframework.http.server.ServerHttpRequest;
|
||||
import org.springframework.http.server.ServerHttpResponse;
|
||||
import org.springframework.web.socket.server.HandshakeFailureException;
|
||||
import org.xnio.StreamConnection;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.websocket.Decoder;
|
||||
import javax.websocket.Encoder;
|
||||
import javax.websocket.Endpoint;
|
||||
import javax.websocket.Extension;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -60,13 +63,13 @@ public class UndertowRequestUpgradeStrategy extends AbstractStandardUpgradeStrat
|
|||
|
||||
|
||||
public UndertowRequestUpgradeStrategy() {
|
||||
this.handshakes = new Handshake[] { new Hybi13Handshake(), new Hybi08Handshake(), new Hybi07Handshake() };
|
||||
this.handshakes = new Handshake[] {new Hybi13Handshake(), new Hybi08Handshake(), new Hybi07Handshake()};
|
||||
this.supportedVersions = initSupportedVersions(this.handshakes);
|
||||
}
|
||||
|
||||
private String[] initSupportedVersions(Handshake[] handshakes) {
|
||||
String[] versions = new String[handshakes.length];
|
||||
for (int i=0; i < versions.length; i++) {
|
||||
for (int i = 0; i < versions.length; i++) {
|
||||
versions[i] = handshakes[i].getVersion().toHttpHeaderValue();
|
||||
}
|
||||
return versions;
|
||||
|
|
@ -125,8 +128,7 @@ public class UndertowRequestUpgradeStrategy extends AbstractStandardUpgradeStrat
|
|||
endpointRegistration.setSubprotocols(Arrays.asList(selectedProtocol));
|
||||
endpointRegistration.setExtensions(selectedExtensions);
|
||||
|
||||
return new ConfiguredServerEndpoint(endpointRegistration,
|
||||
new EndpointInstanceFactory(endpoint), null,
|
||||
return new ConfiguredServerEndpoint(endpointRegistration, new EndpointInstanceFactory(endpoint), null,
|
||||
new EncodingFactory(
|
||||
Collections.<Class<?>, List<InstanceFactory<? extends Encoder>>>emptyMap(),
|
||||
Collections.<Class<?>, List<InstanceFactory<? extends Decoder>>>emptyMap(),
|
||||
|
|
@ -145,7 +147,6 @@ public class UndertowRequestUpgradeStrategy extends AbstractStandardUpgradeStrat
|
|||
|
||||
@Override
|
||||
public InstanceHandle<Endpoint> createInstance() throws InstantiationException {
|
||||
|
||||
return new InstanceHandle<Endpoint>() {
|
||||
@Override
|
||||
public Endpoint getInstance() {
|
||||
|
|
|
|||
|
|
@ -23,17 +23,18 @@ import java.util.Arrays;
|
|||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.socket.handler.TextWebSocketHandler;
|
||||
import org.springframework.web.socket.handler.AbstractWebSocketHandler;
|
||||
import org.springframework.web.socket.client.standard.StandardWebSocketClient;
|
||||
import org.springframework.web.socket.client.jetty.JettyWebSocketClient;
|
||||
import org.springframework.web.socket.server.support.DefaultHandshakeHandler;
|
||||
import org.springframework.web.socket.client.standard.StandardWebSocketClient;
|
||||
import org.springframework.web.socket.config.annotation.EnableWebSocket;
|
||||
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
|
||||
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
|
||||
import org.springframework.web.socket.handler.AbstractWebSocketHandler;
|
||||
import org.springframework.web.socket.handler.TextWebSocketHandler;
|
||||
import org.springframework.web.socket.server.support.DefaultHandshakeHandler;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
|
|
@ -47,22 +48,21 @@ public class WebSocketIntegrationTests extends AbstractWebSocketIntegrationTest
|
|||
|
||||
@Parameterized.Parameters
|
||||
public static Iterable<Object[]> arguments() {
|
||||
return Arrays.asList(new Object[][]{
|
||||
return Arrays.asList(new Object[][] {
|
||||
{new JettyWebSocketTestServer(), new JettyWebSocketClient()},
|
||||
{new TomcatWebSocketTestServer(), new StandardWebSocketClient()},
|
||||
{new UndertowTestServer(), new JettyWebSocketClient()}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Class<?>[] getAnnotatedConfigClasses() {
|
||||
return new Class<?>[] { TestWebSocketConfigurer.class };
|
||||
return new Class<?>[] {TestWebSocketConfigurer.class};
|
||||
}
|
||||
|
||||
@Test
|
||||
public void subProtocolNegotiation() throws Exception {
|
||||
|
||||
WebSocketHttpHeaders headers = new WebSocketHttpHeaders();
|
||||
headers.setSecWebSocketProtocol("foo");
|
||||
|
||||
|
|
@ -78,7 +78,7 @@ public class WebSocketIntegrationTests extends AbstractWebSocketIntegrationTest
|
|||
static class TestWebSocketConfigurer implements WebSocketConfigurer {
|
||||
|
||||
@Autowired
|
||||
private DefaultHandshakeHandler handshakeHandler; // can't rely on classpath for server detection
|
||||
private DefaultHandshakeHandler handshakeHandler; // can't rely on classpath for server detection
|
||||
|
||||
@Override
|
||||
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
|
||||
|
|
@ -92,6 +92,7 @@ public class WebSocketIntegrationTests extends AbstractWebSocketIntegrationTest
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private static class TestServerWebSocketHandler extends TextWebSocketHandler {
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue