Package io.undertow.websockets.jsr
Class ServerWebSocketContainer
- java.lang.Object
-
- io.undertow.websockets.jsr.ServerWebSocketContainer
-
- All Implemented Interfaces:
Closeable,AutoCloseable,javax.websocket.server.ServerContainer,javax.websocket.WebSocketContainer
public class ServerWebSocketContainer extends Object implements javax.websocket.server.ServerContainer, Closeable
ServerContainerimplementation which allows to deploy endpoints for a server.- Author:
- Norman Maurer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceServerWebSocketContainer.PauseListener
-
Field Summary
Fields Modifier and Type Field Description static intDEFAULT_WEB_SOCKET_TIMEOUT_SECONDSstatic StringTIMEOUT
-
Constructor Summary
Constructors Constructor Description ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, ClassLoader classLoader, Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker)ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, ClassLoader classLoader, Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, InetSocketAddress clientBindAddress, WebSocketReconnectHandler reconnectHandler)ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, ClassLoader classLoader, Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, InetSocketAddress clientBindAddress, WebSocketReconnectHandler reconnectHandler, List<javax.websocket.Extension> installedExtensions)ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, boolean clientMode)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddEndpoint(Class<?> endpoint)voidaddEndpoint(javax.websocket.server.ServerEndpointConfig endpoint)voidclose()voidclose(int waitTime)javax.websocket.SessionconnectToServer(Class<?> aClass, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder)javax.websocket.SessionconnectToServer(Class<?> aClass, URI uri)javax.websocket.SessionconnectToServer(Class<? extends javax.websocket.Endpoint> endpointClass, javax.websocket.ClientEndpointConfig cec, URI path)javax.websocket.SessionconnectToServer(Object annotatedEndpointInstance, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder)javax.websocket.SessionconnectToServer(Object annotatedEndpointInstance, URI path)javax.websocket.SessionconnectToServer(javax.websocket.Endpoint endpointInstance, javax.websocket.ClientEndpointConfig config, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder)javax.websocket.SessionconnectToServer(javax.websocket.Endpoint endpointInstance, javax.websocket.ClientEndpointConfig config, URI path)voiddeploymentComplete()voiddoUpgrade(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.websocket.server.ServerEndpointConfig sec, Map<String,String> pathParams)io.undertow.connector.ByteBufferPoolgetBufferPool()List<ConfiguredServerEndpoint>getConfiguredServerEndpoints()io.undertow.servlet.spec.ServletContextImplgetContextToAddFilter()longgetDefaultAsyncSendTimeout()intgetDefaultMaxBinaryMessageBufferSize()longgetDefaultMaxSessionIdleTimeout()intgetDefaultMaxTextMessageBufferSize()Set<javax.websocket.Extension>getInstalledExtensions()WebSocketReconnectHandlergetWebSocketReconnectHandler()org.xnio.XnioWorkergetXnioWorker()voidinvokeEndpointMethod(Runnable invocation)Directly invokes an endpoint method, without dispatching to an executorvoidinvokeEndpointMethod(Executor executor, Runnable invocation)Runs a web socket invocation, setting up the threads and dispatching a thread poolbooleanisClosed()booleanisDispatchToWorker()voidpause(ServerWebSocketContainer.PauseListener listener)Pauses the containervoidresume()resumes a paused containervoidsetAsyncSendTimeout(long defaultAsyncSendTimeout)voidsetContextToAddFilter(io.undertow.servlet.spec.ServletContextImpl contextToAddFilter)voidsetDefaultMaxBinaryMessageBufferSize(int defaultMaxBinaryMessageBufferSize)voidsetDefaultMaxSessionIdleTimeout(long timeout)voidsetDefaultMaxTextMessageBufferSize(int defaultMaxTextMessageBufferSize)voidvalidateDeployment()
-
-
-
Field Detail
-
TIMEOUT
public static final String TIMEOUT
- See Also:
- Constant Field Values
-
DEFAULT_WEB_SOCKET_TIMEOUT_SECONDS
public static final int DEFAULT_WEB_SOCKET_TIMEOUT_SECONDS
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ServerWebSocketContainer
public ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, boolean clientMode)
-
ServerWebSocketContainer
public ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, ClassLoader classLoader, Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker)
-
ServerWebSocketContainer
public ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, ClassLoader classLoader, Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, InetSocketAddress clientBindAddress, WebSocketReconnectHandler reconnectHandler)
-
ServerWebSocketContainer
public ServerWebSocketContainer(io.undertow.servlet.api.ClassIntrospecter classIntrospecter, ClassLoader classLoader, Supplier<org.xnio.XnioWorker> xnioWorker, io.undertow.connector.ByteBufferPool bufferPool, List<io.undertow.servlet.api.ThreadSetupHandler> threadSetupHandlers, boolean dispatchToWorker, InetSocketAddress clientBindAddress, WebSocketReconnectHandler reconnectHandler, List<javax.websocket.Extension> installedExtensions)
-
-
Method Detail
-
getDefaultAsyncSendTimeout
public long getDefaultAsyncSendTimeout()
- Specified by:
getDefaultAsyncSendTimeoutin interfacejavax.websocket.WebSocketContainer
-
setAsyncSendTimeout
public void setAsyncSendTimeout(long defaultAsyncSendTimeout)
- Specified by:
setAsyncSendTimeoutin interfacejavax.websocket.WebSocketContainer
-
connectToServer
public javax.websocket.Session connectToServer(Object annotatedEndpointInstance, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder) throws javax.websocket.DeploymentException, IOException
- Throws:
javax.websocket.DeploymentExceptionIOException
-
connectToServer
public javax.websocket.Session connectToServer(Object annotatedEndpointInstance, URI path) throws javax.websocket.DeploymentException, IOException
- Specified by:
connectToServerin interfacejavax.websocket.WebSocketContainer- Throws:
javax.websocket.DeploymentExceptionIOException
-
connectToServer
public javax.websocket.Session connectToServer(Class<?> aClass, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder) throws javax.websocket.DeploymentException, IOException
- Throws:
javax.websocket.DeploymentExceptionIOException
-
connectToServer
public javax.websocket.Session connectToServer(Class<?> aClass, URI uri) throws javax.websocket.DeploymentException, IOException
- Specified by:
connectToServerin interfacejavax.websocket.WebSocketContainer- Throws:
javax.websocket.DeploymentExceptionIOException
-
connectToServer
public javax.websocket.Session connectToServer(javax.websocket.Endpoint endpointInstance, javax.websocket.ClientEndpointConfig config, URI path) throws javax.websocket.DeploymentException, IOException- Specified by:
connectToServerin interfacejavax.websocket.WebSocketContainer- Throws:
javax.websocket.DeploymentExceptionIOException
-
connectToServer
public javax.websocket.Session connectToServer(javax.websocket.Endpoint endpointInstance, javax.websocket.ClientEndpointConfig config, io.undertow.websockets.client.WebSocketClient.ConnectionBuilder connectionBuilder) throws javax.websocket.DeploymentException, IOException- Throws:
javax.websocket.DeploymentExceptionIOException
-
connectToServer
public javax.websocket.Session connectToServer(Class<? extends javax.websocket.Endpoint> endpointClass, javax.websocket.ClientEndpointConfig cec, URI path) throws javax.websocket.DeploymentException, IOException
- Specified by:
connectToServerin interfacejavax.websocket.WebSocketContainer- Throws:
javax.websocket.DeploymentExceptionIOException
-
doUpgrade
public void doUpgrade(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.websocket.server.ServerEndpointConfig sec, Map<String,String> pathParams) throws javax.servlet.ServletException, IOException- Throws:
javax.servlet.ServletExceptionIOException
-
getDefaultMaxSessionIdleTimeout
public long getDefaultMaxSessionIdleTimeout()
- Specified by:
getDefaultMaxSessionIdleTimeoutin interfacejavax.websocket.WebSocketContainer
-
setDefaultMaxSessionIdleTimeout
public void setDefaultMaxSessionIdleTimeout(long timeout)
- Specified by:
setDefaultMaxSessionIdleTimeoutin interfacejavax.websocket.WebSocketContainer
-
getDefaultMaxBinaryMessageBufferSize
public int getDefaultMaxBinaryMessageBufferSize()
- Specified by:
getDefaultMaxBinaryMessageBufferSizein interfacejavax.websocket.WebSocketContainer
-
setDefaultMaxBinaryMessageBufferSize
public void setDefaultMaxBinaryMessageBufferSize(int defaultMaxBinaryMessageBufferSize)
- Specified by:
setDefaultMaxBinaryMessageBufferSizein interfacejavax.websocket.WebSocketContainer
-
getDefaultMaxTextMessageBufferSize
public int getDefaultMaxTextMessageBufferSize()
- Specified by:
getDefaultMaxTextMessageBufferSizein interfacejavax.websocket.WebSocketContainer
-
setDefaultMaxTextMessageBufferSize
public void setDefaultMaxTextMessageBufferSize(int defaultMaxTextMessageBufferSize)
- Specified by:
setDefaultMaxTextMessageBufferSizein interfacejavax.websocket.WebSocketContainer
-
getInstalledExtensions
public Set<javax.websocket.Extension> getInstalledExtensions()
- Specified by:
getInstalledExtensionsin interfacejavax.websocket.WebSocketContainer
-
invokeEndpointMethod
public void invokeEndpointMethod(Executor executor, Runnable invocation)
Runs a web socket invocation, setting up the threads and dispatching a thread poolUnfortunately we need to dispatch to a thread pool, because there is a good chance that the endpoint will use blocking IO methods. We suspend recieves while this is in progress, to make sure that we do not have multiple methods invoked at once.
- Parameters:
invocation- The task to run
-
invokeEndpointMethod
public void invokeEndpointMethod(Runnable invocation)
Directly invokes an endpoint method, without dispatching to an executor- Parameters:
invocation- The invocation
-
addEndpoint
public void addEndpoint(Class<?> endpoint) throws javax.websocket.DeploymentException
- Specified by:
addEndpointin interfacejavax.websocket.server.ServerContainer- Throws:
javax.websocket.DeploymentException
-
addEndpoint
public void addEndpoint(javax.websocket.server.ServerEndpointConfig endpoint) throws javax.websocket.DeploymentException- Specified by:
addEndpointin interfacejavax.websocket.server.ServerContainer- Throws:
javax.websocket.DeploymentException
-
validateDeployment
public void validateDeployment()
-
deploymentComplete
public void deploymentComplete()
-
getConfiguredServerEndpoints
public List<ConfiguredServerEndpoint> getConfiguredServerEndpoints()
-
getContextToAddFilter
public io.undertow.servlet.spec.ServletContextImpl getContextToAddFilter()
-
setContextToAddFilter
public void setContextToAddFilter(io.undertow.servlet.spec.ServletContextImpl contextToAddFilter)
-
close
public void close(int waitTime)
-
close
public void close()
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable
-
getBufferPool
public io.undertow.connector.ByteBufferPool getBufferPool()
-
getXnioWorker
public org.xnio.XnioWorker getXnioWorker()
-
pause
public void pause(ServerWebSocketContainer.PauseListener listener)
Pauses the container- Parameters:
listener-
-
resume
public void resume()
resumes a paused container
-
getWebSocketReconnectHandler
public WebSocketReconnectHandler getWebSocketReconnectHandler()
-
isClosed
public boolean isClosed()
-
isDispatchToWorker
public boolean isDispatchToWorker()
-
-