Class WebSocketClient
java.lang.Object
org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.ContainerLifeCycle
org.eclipse.jetty.websocket.client.WebSocketClient
- All Implemented Interfaces:
org.eclipse.jetty.util.component.Container
,org.eclipse.jetty.util.component.Destroyable
,org.eclipse.jetty.util.component.Dumpable
,org.eclipse.jetty.util.component.Dumpable.DumpableContainer
,org.eclipse.jetty.util.component.LifeCycle
,WebSocketContainerScope
public class WebSocketClient
extends org.eclipse.jetty.util.component.ContainerLifeCycle
implements WebSocketContainerScope
WebSocketClient provides a means of establishing connections to remote websocket endpoints.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Container
org.eclipse.jetty.util.component.Container.InheritedListener, org.eclipse.jetty.util.component.Container.Listener
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
org.eclipse.jetty.util.component.Dumpable.DumpableContainer
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
org.eclipse.jetty.util.component.LifeCycle.Listener
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ClassLoader
private EventDriverFactory
private final WebSocketExtensionFactory
private final org.eclipse.jetty.client.HttpClient
private static final org.eclipse.jetty.util.log.Logger
private final Supplier
<org.eclipse.jetty.util.DecoratedObjectFactory> private final WebSocketPolicy
private SessionFactory
private final List
<WebSocketSessionListener> private final SessionTracker
private boolean
Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
FAILED, RUNNING, STARTED, STARTING, STOPPED, STOPPING
Fields inherited from interface org.eclipse.jetty.util.component.Dumpable
KEY
-
Constructor Summary
ConstructorsConstructorDescriptionInstantiate a WebSocketClient with defaults.WebSocketClient
(Executor executor) Deprecated.WebSocketClient
(org.eclipse.jetty.client.HttpClient httpClient) Instantiate a WebSocketClient using provided HttpClient.WebSocketClient
(org.eclipse.jetty.client.HttpClient httpClient, org.eclipse.jetty.util.DecoratedObjectFactory decoratedObjectFactory) Instantiate a WebSocketClient using HttpClient for defaultsWebSocketClient
(org.eclipse.jetty.io.ByteBufferPool bufferPool) Deprecated.useWebSocketClient(HttpClient)
insteadWebSocketClient
(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory) Deprecated.useWebSocketClient(HttpClient)
insteadWebSocketClient
(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory, Executor executor) Deprecated.useWebSocketClient(HttpClient)
insteadWebSocketClient
(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory, Executor executor, org.eclipse.jetty.io.ByteBufferPool bufferPool) Deprecated.useWebSocketClient(HttpClient)
insteadDeprecated.useWebSocketClient(HttpClient)
insteadWebSocketClient
(WebSocketContainerScope scope, org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory) Deprecated.useWebSocketClient(HttpClient)
insteadWebSocketClient
(WebSocketContainerScope scope, EventDriverFactory eventDriverFactory, SessionFactory sessionFactory) Deprecated.WebSocketClient
(WebSocketContainerScope scope, EventDriverFactory eventDriverFactory, SessionFactory sessionFactory, org.eclipse.jetty.client.HttpClient httpClient) Create WebSocketClient based on pre-existing Container Scope, to allow sharing of internal features like Executor, ByteBufferPool, SSLContextFactory, etc. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addSessionListener
(WebSocketSessionListener listener) connect
(Object websocket, URI toUri, ClientUpgradeRequest request) Connect to remote websocket endpointconnect
(Object websocket, URI toUri, ClientUpgradeRequest request, UpgradeListener upgradeListener) Connect to remote websocket endpointprotected void
doStart()
protected void
doStop()
boolean
long
Deprecated.org.eclipse.jetty.io.ByteBufferPool
The configured Container Buffer Pool.The ClassLoader used to load classes for the WebSocketSession.Deprecated.long
Executor in use by the container.org.eclipse.jetty.client.HttpClient
Get the internalHttpClient
.Deprecated.not used, no replacementint
Get the maximum size for buffering of a binary message.long
Get the maximum size for a binary message.long
Get the max idle timeout for new connections.int
Get the maximum size for buffering of a text message.long
Get the maximum size for a text message.org.eclipse.jetty.util.DecoratedObjectFactory
Object Factory used to create objects.The policy the container is running on.org.eclipse.jetty.util.thread.Scheduler
org.eclipse.jetty.util.ssl.SslContextFactory
Get the in useSslContextFactory
int
hashCode()
private void
init()
boolean
Deprecated.boolean
protected ConnectionManager
Deprecated.has no replacementprivate static org.eclipse.jetty.client.HttpClient
newHttpClient
(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory, Executor executor, org.eclipse.jetty.io.ByteBufferPool bufferPool) void
void
setAsyncWriteTimeout
(long ms) void
setBindAdddress
(SocketAddress bindAddress) Deprecated.(this is a bad bad bad typo, it has 3 { @ code " d " } characters in a row) useHttpClient.setBindAddress(SocketAddress)
to the internalWebSocketClient(HttpClient)
void
setBindAddress
(SocketAddress bindAddress) Sets the Bind Address on the internalHttpClient
.void
setBufferPool
(org.eclipse.jetty.io.ByteBufferPool bufferPool) Set's the Bind Address on the internalHttpClient
.void
setConnectTimeout
(long ms) Set the timeout for connecting to the remote server on the internalHttpClient
void
setCookieStore
(CookieStore cookieStore) Set theCookieStore
to use on the internalHttpClient
void
setDaemon
(boolean daemon) Deprecated.not used, configure threading inHttpClient
insteadvoid
setDispatchIO
(boolean dispatchIO) Deprecated.no longer used, this has no replacementvoid
setEventDriverFactory
(EventDriverFactory eventDriverFactory) void
setExecutor
(Executor executor) Sets the Executor in use on the internalHttpClient
void
Deprecated.not used, no replacementvoid
setMaxBinaryMessageBufferSize
(int max) void
setMaxIdleTimeout
(long ms) Set the max idle timeout for new connections.void
setMaxTextMessageBufferSize
(int max) void
setSessionFactory
(SessionFactory sessionFactory) void
setStopAtShutdown
(boolean stop) Set JVM shutdown behavior.toString()
Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, destroy, dump, dump, dump, dump, dump, dumpBeans, dumpObject, dumpObjects, dumpStdErr, dumpThis, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeans
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.jetty.util.component.Dumpable
dumpSelf
Methods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainer
isDumpable
Methods inherited from interface org.eclipse.jetty.websocket.common.scopes.WebSocketContainerScope
isRunning
-
Field Details
-
LOG
private static final org.eclipse.jetty.util.log.Logger LOG -
httpClient
private final org.eclipse.jetty.client.HttpClient httpClient -
objectFactorySupplier
-
classloader
-
policy
-
extensionRegistry
-
sessionTracker
-
sessionListeners
-
eventDriverFactory
-
sessionFactory
-
stopAtShutdown
private boolean stopAtShutdown
-
-
Constructor Details
-
WebSocketClient
public WebSocketClient()Instantiate a WebSocketClient with defaults. -
WebSocketClient
public WebSocketClient(org.eclipse.jetty.client.HttpClient httpClient) Instantiate a WebSocketClient using provided HttpClient.- Parameters:
httpClient
- the HttpClient to use for WebSocketClient.
-
WebSocketClient
public WebSocketClient(org.eclipse.jetty.client.HttpClient httpClient, org.eclipse.jetty.util.DecoratedObjectFactory decoratedObjectFactory) Instantiate a WebSocketClient using HttpClient for defaults- Parameters:
httpClient
- the HttpClient that underlying WebSocket client usesdecoratedObjectFactory
- the DecoratedObjectFactory for all client instantiated classes
-
WebSocketClient
Deprecated.useWebSocketClient(HttpClient)
insteadCreate a new WebSocketClient- Parameters:
sslContextFactory
- ssl context factory to use on the internalHttpClient
-
WebSocketClient
Deprecated.useWebSocketClient(HttpClient)
insteadCreate a new WebSocketClient- Parameters:
executor
- the executor to use on the internalHttpClient
-
WebSocketClient
Deprecated.useWebSocketClient(HttpClient)
insteadCreate a new WebSocketClient- Parameters:
bufferPool
- byte buffer pool to use on the internalHttpClient
-
WebSocketClient
@Deprecated public WebSocketClient(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory, Executor executor) Deprecated.useWebSocketClient(HttpClient)
insteadCreate a new WebSocketClient- Parameters:
sslContextFactory
- ssl context factory to use on the internalHttpClient
executor
- the executor to use on the internalHttpClient
-
WebSocketClient
Deprecated.useWebSocketClient(HttpClient)
insteadCreate WebSocketClient other Container Scope, to allow sharing of internal features like Executor, ByteBufferPool, SSLContextFactory, etc.- Parameters:
scope
- the Container Scope
-
WebSocketClient
@Deprecated public WebSocketClient(WebSocketContainerScope scope, org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory) Deprecated.useWebSocketClient(HttpClient)
insteadCreate WebSocketClient other Container Scope, to allow sharing of internal features like Executor, ByteBufferPool, SSLContextFactory, etc.- Parameters:
scope
- the Container ScopesslContextFactory
- SSL ContextFactory to use in preference to one fromWebSocketContainerScope.getSslContextFactory()
-
WebSocketClient
@Deprecated public WebSocketClient(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory, Executor executor, org.eclipse.jetty.io.ByteBufferPool bufferPool) Deprecated.useWebSocketClient(HttpClient)
insteadCreate WebSocketClient using sharing instances of SSLContextFactory Executor, and ByteBufferPool- Parameters:
sslContextFactory
- shared SSL ContextFactoryexecutor
- shared ExecutorbufferPool
- shared ByteBufferPool
-
WebSocketClient
@Deprecated public WebSocketClient(WebSocketContainerScope scope, EventDriverFactory eventDriverFactory, SessionFactory sessionFactory) Deprecated.Create WebSocketClient based on pre-existing Container Scope, to allow sharing of internal features like Executor, ByteBufferPool, SSLContextFactory, etc.- Parameters:
scope
- the Container ScopeeventDriverFactory
- the EventDriver Factory to usesessionFactory
- the SessionFactory to use
-
WebSocketClient
public WebSocketClient(WebSocketContainerScope scope, EventDriverFactory eventDriverFactory, SessionFactory sessionFactory, org.eclipse.jetty.client.HttpClient httpClient) Create WebSocketClient based on pre-existing Container Scope, to allow sharing of internal features like Executor, ByteBufferPool, SSLContextFactory, etc.- Parameters:
scope
- the Container ScopeeventDriverFactory
- the EventDriver Factory to usesessionFactory
- the SessionFactory to usehttpClient
- the httpClient to use
-
-
Method Details
-
newHttpClient
private static org.eclipse.jetty.client.HttpClient newHttpClient(org.eclipse.jetty.util.ssl.SslContextFactory sslContextFactory, Executor executor, org.eclipse.jetty.io.ByteBufferPool bufferPool) -
connect
- Throws:
IOException
-
connect
public Future<Session> connect(Object websocket, URI toUri, ClientUpgradeRequest request) throws IOException Connect to remote websocket endpoint- Parameters:
websocket
- the websocket objecttoUri
- the websocket uri to connect torequest
- the upgrade request information- Returns:
- the future for the session, available on success of connect
- Throws:
IOException
- if unable to connect
-
connect
public Future<Session> connect(Object websocket, URI toUri, ClientUpgradeRequest request, UpgradeListener upgradeListener) throws IOException Connect to remote websocket endpoint- Parameters:
websocket
- the websocket objecttoUri
- the websocket uri to connect torequest
- the upgrade request informationupgradeListener
- the upgrade listener- Returns:
- the future for the session, available on success of connect
- Throws:
IOException
- if unable to connect
-
getClassLoader
Description copied from interface:WebSocketContainerScope
The ClassLoader used to load classes for the WebSocketSession.
By default this will be the ContextClassLoader at the time this method is called. However this will be overridden by the WebSocketClient to use the ContextClassLoader at the time it was created, this is because the client uses its own
ThreadPool
so the WebSocketSessions may be created when the ContextClassLoader is not set.- Specified by:
getClassLoader
in interfaceWebSocketContainerScope
- Returns:
- the classloader.
-
setEventDriverFactory
-
setSessionFactory
-
doStart
- Overrides:
doStart
in classorg.eclipse.jetty.util.component.ContainerLifeCycle
- Throws:
Exception
-
doStop
- Overrides:
doStop
in classorg.eclipse.jetty.util.component.ContainerLifeCycle
- Throws:
Exception
-
isDispatchIO
Deprecated. -
getAsyncWriteTimeout
Deprecated.Return the number of milliseconds for a timeout of an attempted write operation.- Returns:
- number of milliseconds for timeout of an attempted write operation
-
getBindAddress
-
getBufferPool
public org.eclipse.jetty.io.ByteBufferPool getBufferPool()Description copied from interface:WebSocketContainerScope
The configured Container Buffer Pool.- Specified by:
getBufferPool
in interfaceWebSocketContainerScope
- Returns:
- the buffer pool (never null)
-
getConnectionManager
Deprecated. -
getConnectTimeout
public long getConnectTimeout() -
getCookieStore
-
getEventDriverFactory
-
getExecutor
Description copied from interface:WebSocketContainerScope
Executor in use by the container.- Specified by:
getExecutor
in interfaceWebSocketContainerScope
- Returns:
- the Executor in use by the container.
-
getExtensionFactory
-
getMasker
Deprecated.not used, no replacement- Returns:
- a
RandomMasker
instance
-
getMaxBinaryMessageBufferSize
public int getMaxBinaryMessageBufferSize()Get the maximum size for buffering of a binary message.- Returns:
- the maximum size of a binary message buffer.
-
getMaxBinaryMessageSize
public long getMaxBinaryMessageSize()Get the maximum size for a binary message.- Returns:
- the maximum size of a binary message.
-
getMaxIdleTimeout
public long getMaxIdleTimeout()Get the max idle timeout for new connections.- Returns:
- the max idle timeout in milliseconds for new connections.
-
getMaxTextMessageBufferSize
public int getMaxTextMessageBufferSize()Get the maximum size for buffering of a text message.- Returns:
- the maximum size of a text message buffer.
-
getMaxTextMessageSize
public long getMaxTextMessageSize()Get the maximum size for a text message.- Returns:
- the maximum size of a text message.
-
getObjectFactory
public org.eclipse.jetty.util.DecoratedObjectFactory getObjectFactory()Description copied from interface:WebSocketContainerScope
Object Factory used to create objects.- Specified by:
getObjectFactory
in interfaceWebSocketContainerScope
- Returns:
- Object Factory used to create instances of objects.
-
getOpenSessions
-
getPolicy
Description copied from interface:WebSocketContainerScope
The policy the container is running on.- Specified by:
getPolicy
in interfaceWebSocketContainerScope
- Returns:
- the websocket policy
-
getScheduler
public org.eclipse.jetty.util.thread.Scheduler getScheduler() -
getSessionFactory
-
getSslContextFactory
public org.eclipse.jetty.util.ssl.SslContextFactory getSslContextFactory()Get the in useSslContextFactory
- Specified by:
getSslContextFactory
in interfaceWebSocketContainerScope
- Returns:
- the
SslContextFactory
that manages TLS encryption on the internalHttpClient
- See Also:
-
addSessionListener
- Specified by:
addSessionListener
in interfaceWebSocketContainerScope
-
removeSessionListener
- Specified by:
removeSessionListener
in interfaceWebSocketContainerScope
-
getSessionListeners
- Specified by:
getSessionListeners
in interfaceWebSocketContainerScope
-
init
private void init() -
newConnectionManager
Deprecated.has no replacementFactory method for new ConnectionManager- Returns:
- the ConnectionManager instance to use
-
setAsyncWriteTimeout
public void setAsyncWriteTimeout(long ms) -
setBindAdddress
Deprecated.(this is a bad bad bad typo, it has 3 { @ code " d " } characters in a row) useHttpClient.setBindAddress(SocketAddress)
to the internalWebSocketClient(HttpClient)
- Parameters:
bindAddress
- the address to bind to the internalHttpClient
-
setBindAddress
Sets the Bind Address on the internalHttpClient
.- Parameters:
bindAddress
- the local bind address for the internalHttpClient
-
setBufferPool
public void setBufferPool(org.eclipse.jetty.io.ByteBufferPool bufferPool) Set's the Bind Address on the internalHttpClient
.- Parameters:
bufferPool
- The buffer pool
-
setConnectTimeout
public void setConnectTimeout(long ms) Set the timeout for connecting to the remote server on the internalHttpClient
- Parameters:
ms
- the timeout in milliseconds
-
setCookieStore
Set theCookieStore
to use on the internalHttpClient
- Parameters:
cookieStore
- The cookie store
-
setDaemon
Deprecated.not used, configure threading inHttpClient
instead- Parameters:
daemon
- do nothing
-
setDispatchIO
Deprecated.no longer used, this has no replacement- Parameters:
dispatchIO
- true to have IO operations be dispatched to Executor
-
setExecutor
Sets the Executor in use on the internalHttpClient
- Parameters:
executor
- The executor to use
-
setMasker
Deprecated.not used, no replacement- Parameters:
masker
- does nothing
-
setMaxBinaryMessageBufferSize
public void setMaxBinaryMessageBufferSize(int max) -
setMaxIdleTimeout
public void setMaxIdleTimeout(long ms) Set the max idle timeout for new connections.Existing connections will not have their max idle timeout adjusted.
- Parameters:
ms
- the timeout in milliseconds
-
setMaxTextMessageBufferSize
public void setMaxTextMessageBufferSize(int max) -
getHttpClient
public org.eclipse.jetty.client.HttpClient getHttpClient()Get the internalHttpClient
.Note: this can result in a
LinkageError
if used within a WebApp that runs on a server that also hasHttpClient
on the server classpath.- Returns:
- the internal
HttpClient
-
setStopAtShutdown
public void setStopAtShutdown(boolean stop) Set JVM shutdown behavior.- Parameters:
stop
- If true, this client instance will be explicitly stopped when the JVM is shutdown. Otherwise the application is responsible for maintaining the WebSocketClient lifecycle.- See Also:
-
isStopAtShutdown
public boolean isStopAtShutdown() -
equals
-
hashCode
public int hashCode() -
toString
- Overrides:
toString
in classorg.eclipse.jetty.util.component.AbstractLifeCycle
-
WebSocketClient(HttpClient)
instead