Class WebSocketClient
- All Implemented Interfaces:
AutoCloseable
,Container
,Destroyable
,Dumpable
,Dumpable.DumpableContainer
,LifeCycle
,Configurable
,WebSocketContainer
-
Nested Class Summary
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener, AbstractLifeCycle.StopException
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Container
Container.InheritedListener, Container.Listener
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
Dumpable.DumpableContainer
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
-
Field Summary
-
Constructor Summary
ConstructorDescriptionInstantiates a WebSocketClient with a defaultHttpClient
.WebSocketClient
(HttpClient httpClient) Instantiates a WebSocketClient with the givenHttpClient
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addSessionListener
(WebSocketSessionListener listener) Register a WebSocketSessionListener with the containervoid
close()
connect
(Object websocket, URI toUri, ClientUpgradeRequest request) Connect to remote websocket endpointconnect
(Object websocket, URI toUri, ClientUpgradeRequest request, JettyUpgradeListener upgradeListener) Connect to remote websocket endpointprotected void
doStop()
Stops the managed lifecycle beans in the reverse order they were added.void
dump
(Appendable out, String indent) Dump this object (and children) into an Appendable using the provided indent after any new lines.long
The Container provided Executor.The duration that a websocket may be idle before being closed by the implementationint
The input (read from network layer) buffer size.long
Get the maximum size of a binary message during parsing.long
The maximum payload size of any WebSocket Frame which can be received.int
Get the maximum number of data frames allowed to be waiting to be sent at any one time.long
Get the maximum size of a text message during parsing.Get the collection of open Sessions being tracked by this containerint
The output (write to network layer) buffer size.Get theSslContextFactory
that manages TLS encryption.long
boolean
If true, frames are automatically fragmented to respect the maximum frame size.boolean
void
Notify the Session Listeners of an event.boolean
Remove a WebSocketSessionListener from the containervoid
setAutoFragment
(boolean autoFragment) If set to true, frames are automatically fragmented to respect the maximum frame size.void
setBindAddress
(SocketAddress bindAddress) void
setConnectTimeout
(long ms) Set the timeout for connecting to the remote server.void
setIdleTimeout
(Duration duration) The duration that a websocket may be idle before being closed by the implementationvoid
setInputBufferSize
(int size) The input (read from network layer) buffer size.void
setMaxBinaryMessageSize
(long size) The maximum size of a binary message during parsing/generating.void
setMaxFrameSize
(long maxFrameSize) The maximum payload size of any WebSocket Frame which can be received.void
setMaxOutgoingFrames
(int maxOutgoingFrames) Set the maximum number of data frames allowed to be waiting to be sent at any one time.void
setMaxTextMessageSize
(long size) The maximum size of a text message during parsing/generating.void
setOutputBufferSize
(int size) The output (write to network layer) buffer size.void
setStopAtShutdown
(boolean stop) Set JVM shutdown behavior.void
setStopTimeout
(long stopTimeout) The timeout to allow all remaining open Sessions to be closed gracefully using the close codeStatusCode.SHUTDOWN
.toString()
Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, destroy, doStart, dump, dump, dumpObjects, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, installBean, installBean, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, start, stop, unmanage, updateBean, updateBean, updateBeans, updateBeans
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stop
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.jetty.util.component.Container
getCachedBeans, getEventListeners
Methods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainer
isDumpable
-
Constructor Details
-
WebSocketClient
public WebSocketClient()Instantiates a WebSocketClient with a defaultHttpClient
. -
WebSocketClient
Instantiates a WebSocketClient with the given
HttpClient
.- Parameters:
httpClient
- the HttpClient to use
-
-
Method Details
-
connect
- Throws:
IOException
-
connect
public CompletableFuture<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 CompletableFuture<Session> connect(Object websocket, URI toUri, ClientUpgradeRequest request, JettyUpgradeListener 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
-
dump
Description copied from interface:Dumpable
Dump this object (and children) into an Appendable using the provided indent after any new lines. The indent should not be applied to the first object dumped.- Specified by:
dump
in interfaceDumpable
- Overrides:
dump
in classContainerLifeCycle
- Parameters:
out
- The appendable to dump toindent
- The indent to apply after any new lines.- Throws:
IOException
- if unable to write to Appendable
-
addSessionListener
Description copied from interface:WebSocketContainer
Register a WebSocketSessionListener with the container- Specified by:
addSessionListener
in interfaceWebSocketContainer
- Parameters:
listener
- the listener
-
removeSessionListener
Description copied from interface:WebSocketContainer
Remove a WebSocketSessionListener from the container- Specified by:
removeSessionListener
in interfaceWebSocketContainer
- Parameters:
listener
- the listener- Returns:
- true if listener was present and removed
-
notifySessionListeners
Description copied from interface:WebSocketContainer
Notify the Session Listeners of an event.- Specified by:
notifySessionListeners
in interfaceWebSocketContainer
- Parameters:
consumer
- the consumer to call for each tracked listener
-
getIdleTimeout
Description copied from interface:Configurable
The duration that a websocket may be idle before being closed by the implementation- Specified by:
getIdleTimeout
in interfaceConfigurable
- Returns:
- the timeout duration
-
setIdleTimeout
Description copied from interface:Configurable
The duration that a websocket may be idle before being closed by the implementation- Specified by:
setIdleTimeout
in interfaceConfigurable
- Parameters:
duration
- the timeout duration (may not be null or negative)
-
getInputBufferSize
public int getInputBufferSize()Description copied from interface:Configurable
The input (read from network layer) buffer size.This is the raw read operation buffer size, before the parsing of the websocket frames.
- Specified by:
getInputBufferSize
in interfaceConfigurable
- Returns:
- the raw network buffer input size.
-
setInputBufferSize
public void setInputBufferSize(int size) Description copied from interface:Configurable
The input (read from network layer) buffer size.- Specified by:
setInputBufferSize
in interfaceConfigurable
- Parameters:
size
- the size in bytes
-
getOutputBufferSize
public int getOutputBufferSize()Description copied from interface:Configurable
The output (write to network layer) buffer size.This is the raw write operation buffer size and has no relationship to the websocket frame.
- Specified by:
getOutputBufferSize
in interfaceConfigurable
- Returns:
- the raw network buffer output size.
-
setOutputBufferSize
public void setOutputBufferSize(int size) Description copied from interface:Configurable
The output (write to network layer) buffer size.- Specified by:
setOutputBufferSize
in interfaceConfigurable
- Parameters:
size
- the size in bytes
-
getMaxBinaryMessageSize
public long getMaxBinaryMessageSize()Description copied from interface:Configurable
Get the maximum size of a binary message during parsing.This is a memory conservation option, memory over this limit will not be allocated by Jetty for handling binary messages. This applies to individual frames, whole message handling, and partial message handling.
Binary messages over this maximum will result in a close code 1009
StatusCode.MESSAGE_TOO_LARGE
- Specified by:
getMaxBinaryMessageSize
in interfaceConfigurable
- Returns:
- the maximum size of a binary message
-
setMaxBinaryMessageSize
public void setMaxBinaryMessageSize(long size) Description copied from interface:Configurable
The maximum size of a binary message during parsing/generating.Binary messages over this maximum will result in a close code 1009
StatusCode.MESSAGE_TOO_LARGE
- Specified by:
setMaxBinaryMessageSize
in interfaceConfigurable
- Parameters:
size
- the maximum allowed size of a binary message.
-
getMaxTextMessageSize
public long getMaxTextMessageSize()Description copied from interface:Configurable
Get the maximum size of a text message during parsing.This is a memory conservation option, memory over this limit will not be allocated by Jetty for handling text messages. This applies to individual frames, whole message handling, and partial message handling.
Text messages over this maximum will result in a close code 1009
StatusCode.MESSAGE_TOO_LARGE
- Specified by:
getMaxTextMessageSize
in interfaceConfigurable
- Returns:
- the maximum size of a text message.
-
setMaxTextMessageSize
public void setMaxTextMessageSize(long size) Description copied from interface:Configurable
The maximum size of a text message during parsing/generating.Text messages over this maximum will result in a close code 1009
StatusCode.MESSAGE_TOO_LARGE
- Specified by:
setMaxTextMessageSize
in interfaceConfigurable
- Parameters:
size
- the maximum allowed size of a text message.
-
getMaxFrameSize
public long getMaxFrameSize()Description copied from interface:Configurable
The maximum payload size of any WebSocket Frame which can be received.- Specified by:
getMaxFrameSize
in interfaceConfigurable
- Returns:
- the maximum size of a WebSocket Frame.
-
setMaxFrameSize
public void setMaxFrameSize(long maxFrameSize) Description copied from interface:Configurable
The maximum payload size of any WebSocket Frame which can be received.WebSocket Frames over this maximum will result in a close code 1009
StatusCode.MESSAGE_TOO_LARGE
- Specified by:
setMaxFrameSize
in interfaceConfigurable
- Parameters:
maxFrameSize
- the maximum allowed size of a WebSocket Frame.
-
isAutoFragment
public boolean isAutoFragment()Description copied from interface:Configurable
If true, frames are automatically fragmented to respect the maximum frame size.- Specified by:
isAutoFragment
in interfaceConfigurable
- Returns:
- whether to automatically fragment incoming WebSocket Frames.
-
setAutoFragment
public void setAutoFragment(boolean autoFragment) Description copied from interface:Configurable
If set to true, frames are automatically fragmented to respect the maximum frame size.- Specified by:
setAutoFragment
in interfaceConfigurable
- Parameters:
autoFragment
- whether to automatically fragment incoming WebSocket Frames.
-
getMaxOutgoingFrames
public int getMaxOutgoingFrames()Description copied from interface:Configurable
Get the maximum number of data frames allowed to be waiting to be sent at any one time. The default value is -1, this indicates there is no limit on how many frames can be queued to be sent by the implementation. If the limit is exceeded, subsequent frames sent are failed with aWritePendingException
but the connection is not failed and will remain open.- Specified by:
getMaxOutgoingFrames
in interfaceConfigurable
- Returns:
- the max number of frames.
-
setMaxOutgoingFrames
public void setMaxOutgoingFrames(int maxOutgoingFrames) Description copied from interface:Configurable
Set the maximum number of data frames allowed to be waiting to be sent at any one time. The default value is -1, this indicates there is no limit on how many frames can be queued to be sent by the implementation. If the limit is exceeded, subsequent frames sent are failed with aWritePendingException
but the connection is not failed and will remain open.- Specified by:
setMaxOutgoingFrames
in interfaceConfigurable
- Parameters:
maxOutgoingFrames
- the max number of frames.
-
getBindAddress
-
setBindAddress
-
getConnectTimeout
public long getConnectTimeout() -
setConnectTimeout
public void setConnectTimeout(long ms) Set the timeout for connecting to the remote server.- Parameters:
ms
- the timeout in milliseconds
-
getExecutor
Description copied from interface:WebSocketContainer
The Container provided Executor.- Specified by:
getExecutor
in interfaceWebSocketContainer
-
getHttpClient
-
getObjectFactory
-
getOpenSessions
Description copied from interface:WebSocketContainer
Get the collection of open Sessions being tracked by this container- Specified by:
getOpenSessions
in interfaceWebSocketContainer
- Returns:
- the collection of open sessions
-
getSslContextFactory
Get theSslContextFactory
that manages TLS encryption.- Returns:
- the
SslContextFactory
that manages TLS encryption
-
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:
-
setStopTimeout
public void setStopTimeout(long stopTimeout) The timeout to allow all remaining open Sessions to be closed gracefully using the close codeStatusCode.SHUTDOWN
.- Parameters:
stopTimeout
- the time in ms to wait for the graceful close, use a value less than or equal to 0 to not gracefully close.
-
getStopTimeout
public long getStopTimeout() -
isStopAtShutdown
public boolean isStopAtShutdown() -
doStop
Description copied from class:ContainerLifeCycle
Stops the managed lifecycle beans in the reverse order they were added.- Overrides:
doStop
in classContainerLifeCycle
- Throws:
Exception
- If there was a problem stopping. Will cause a transition to FAILED state
-
close
- Specified by:
close
in interfaceAutoCloseable
- Throws:
Exception
-
toString
- Overrides:
toString
in classAbstractLifeCycle
-