mirror of
https://github.com/jetty/jetty.project.git
synced 2025-03-04 12:59:30 +00:00
Issue #3412 - fix WebSocketClient configuration methods
WebSocketClient implements WebSocketPolicy but the methods were never wired through to use the websocket core FrameHandler.Customizer the WSClient now has a ConfigurationCustomizer which it uses to configure the WebSocketCoreClient Signed-off-by: lachan-roberts <lachlan@webtide.com>
This commit is contained in:
parent
16fa1133d7
commit
13f8202c06
@ -33,6 +33,7 @@ import java.util.function.Consumer;
|
||||
|
||||
import org.eclipse.jetty.client.HttpClient;
|
||||
import org.eclipse.jetty.io.ByteBufferPool;
|
||||
import org.eclipse.jetty.io.Connection;
|
||||
import org.eclipse.jetty.util.DecoratedObjectFactory;
|
||||
import org.eclipse.jetty.util.component.ContainerLifeCycle;
|
||||
import org.eclipse.jetty.util.log.Log;
|
||||
@ -49,6 +50,7 @@ import org.eclipse.jetty.websocket.common.JettyWebSocketFrameHandlerFactory;
|
||||
import org.eclipse.jetty.websocket.common.SessionTracker;
|
||||
import org.eclipse.jetty.websocket.common.WebSocketContainer;
|
||||
import org.eclipse.jetty.websocket.common.WebSocketSessionListener;
|
||||
import org.eclipse.jetty.websocket.core.FrameHandler;
|
||||
import org.eclipse.jetty.websocket.core.WebSocketExtensionRegistry;
|
||||
import org.eclipse.jetty.websocket.core.client.UpgradeListener;
|
||||
import org.eclipse.jetty.websocket.core.client.WebSocketCoreClient;
|
||||
@ -61,23 +63,17 @@ public class WebSocketClient extends ContainerLifeCycle implements WebSocketPoli
|
||||
private final JettyWebSocketFrameHandlerFactory frameHandlerFactory;
|
||||
private final List<WebSocketSessionListener> sessionListeners = new CopyOnWriteArrayList<>();
|
||||
private final SessionTracker sessionTracker = new SessionTracker();
|
||||
private ClassLoader contextClassLoader;
|
||||
private final FrameHandler.ConfigurationCustomizer configurationCustomizer = new FrameHandler.ConfigurationCustomizer();
|
||||
private DecoratedObjectFactory objectFactory;
|
||||
private WebSocketExtensionRegistry extensionRegistry;
|
||||
private int inputBufferSize = 4 * 1024;
|
||||
private int outputBufferSize = 4 * 1024;
|
||||
private long maxBinaryMessageSize = 64 * 1024;
|
||||
private long maxTextMessageSize = 64 * 1024;
|
||||
|
||||
/**
|
||||
* Instantiate a WebSocketClient with defaults
|
||||
*/
|
||||
public WebSocketClient()
|
||||
{
|
||||
this(new WebSocketCoreClient());
|
||||
this.coreClient.getHttpClient().setName("Jetty-WebSocketClient@" + hashCode());
|
||||
// We created WebSocketCoreClient, let lifecycle be managed by us
|
||||
addManaged(coreClient);
|
||||
this(null);
|
||||
coreClient.getHttpClient().setName("Jetty-WebSocketClient@" + hashCode());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -87,19 +83,13 @@ public class WebSocketClient extends ContainerLifeCycle implements WebSocketPoli
|
||||
*/
|
||||
public WebSocketClient(HttpClient httpClient)
|
||||
{
|
||||
this(new WebSocketCoreClient(httpClient));
|
||||
// We created WebSocketCoreClient, let lifecycle be managed by us
|
||||
coreClient = new WebSocketCoreClient(httpClient, configurationCustomizer);
|
||||
addManaged(coreClient);
|
||||
}
|
||||
|
||||
private WebSocketClient(WebSocketCoreClient coreClient)
|
||||
{
|
||||
this.coreClient = coreClient;
|
||||
this.contextClassLoader = this.getClass().getClassLoader();
|
||||
this.objectFactory = new DecoratedObjectFactory();
|
||||
this.extensionRegistry = new WebSocketExtensionRegistry();
|
||||
this.frameHandlerFactory = new JettyWebSocketFrameHandlerFactory(this);
|
||||
this.sessionListeners.add(sessionTracker);
|
||||
objectFactory = new DecoratedObjectFactory();
|
||||
extensionRegistry = new WebSocketExtensionRegistry();
|
||||
frameHandlerFactory = new JettyWebSocketFrameHandlerFactory(this);
|
||||
sessionListeners.add(sessionTracker);
|
||||
addBean(sessionTracker);
|
||||
}
|
||||
|
||||
@ -134,6 +124,9 @@ public class WebSocketClient extends ContainerLifeCycle implements WebSocketPoli
|
||||
*/
|
||||
public CompletableFuture<Session> connect(Object websocket, URI toUri, UpgradeRequest request, UpgradeListener listener) throws IOException
|
||||
{
|
||||
for (Connection.Listener listener : getBeans(Connection.Listener.class))
|
||||
coreClient.addBean(listener);
|
||||
|
||||
JettyClientUpgradeRequest upgradeRequest = new JettyClientUpgradeRequest(this, coreClient, request, toUri, websocket);
|
||||
if (listener != null)
|
||||
upgradeRequest.addListener(listener);
|
||||
@ -184,61 +177,61 @@ public class WebSocketClient extends ContainerLifeCycle implements WebSocketPoli
|
||||
@Override
|
||||
public Duration getIdleTimeout()
|
||||
{
|
||||
return Duration.ofMillis(getHttpClient().getIdleTimeout());
|
||||
return configurationCustomizer.getIdleTimeout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInputBufferSize()
|
||||
{
|
||||
return this.inputBufferSize;
|
||||
return configurationCustomizer.getInputBufferSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOutputBufferSize()
|
||||
{
|
||||
return this.outputBufferSize;
|
||||
return configurationCustomizer.getOutputBufferSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxBinaryMessageSize()
|
||||
{
|
||||
return this.maxBinaryMessageSize;
|
||||
return configurationCustomizer.getMaxBinaryMessageSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxTextMessageSize()
|
||||
{
|
||||
return this.maxTextMessageSize;
|
||||
return configurationCustomizer.getMaxTextMessageSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdleTimeout(Duration duration)
|
||||
{
|
||||
getHttpClient().setIdleTimeout(duration.toMillis());
|
||||
configurationCustomizer.setIdleTimeout(duration);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInputBufferSize(int size)
|
||||
{
|
||||
this.inputBufferSize = size;
|
||||
configurationCustomizer.setInputBufferSize(size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOutputBufferSize(int size)
|
||||
{
|
||||
this.outputBufferSize = size;
|
||||
configurationCustomizer.setOutputBufferSize(size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaxBinaryMessageSize(long size)
|
||||
{
|
||||
this.maxBinaryMessageSize = size;
|
||||
configurationCustomizer.setMaxBinaryMessageSize(size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaxTextMessageSize(long size)
|
||||
{
|
||||
this.maxTextMessageSize = size;
|
||||
configurationCustomizer.setMaxTextMessageSize(size);
|
||||
}
|
||||
|
||||
public SocketAddress getBindAddress()
|
||||
|
Loading…
x
Reference in New Issue
Block a user