Class JettyWebSocketServerContainer

All Implemented Interfaces:
EventListener, Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle, LifeCycle.Listener, WebSocketContainer, WebSocketPolicy

public class JettyWebSocketServerContainer extends ContainerLifeCycle implements WebSocketContainer, WebSocketPolicy, LifeCycle.Listener
  • Field Details

    • JETTY_WEBSOCKET_CONTAINER_ATTRIBUTE

      public static final String JETTY_WEBSOCKET_CONTAINER_ATTRIBUTE
  • Method Details

    • getContainer

      public static JettyWebSocketServerContainer getContainer(jakarta.servlet.ServletContext servletContext)
    • ensureContainer

      public static JettyWebSocketServerContainer ensureContainer(jakarta.servlet.ServletContext servletContext)
    • addMapping

      public void addMapping(String pathSpec, JettyWebSocketCreator creator)
    • addMapping

      public void addMapping(String pathSpec, Class<?> endpointClass)
    • upgrade

      public boolean upgrade(JettyWebSocketCreator creator, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws IOException
      An immediate programmatic WebSocket upgrade that does not register a mapping or create a WebSocketUpgradeFilter.
      Parameters:
      creator - the WebSocketCreator to use.
      request - the HttpServletRequest.
      response - the HttpServletResponse.
      Returns:
      true if the connection was successfully upgraded to WebSocket.
      Throws:
      IOException - if an I/O error occurs.
    • getExecutor

      public Executor getExecutor()
      Description copied from interface: WebSocketContainer
      The Container provided Executor.
      Specified by:
      getExecutor in interface WebSocketContainer
    • addSessionListener

      public void addSessionListener(WebSocketSessionListener listener)
      Description copied from interface: WebSocketContainer
      Register a WebSocketSessionListener with the container
      Specified by:
      addSessionListener in interface WebSocketContainer
      Parameters:
      listener - the listener
    • removeSessionListener

      public boolean removeSessionListener(WebSocketSessionListener listener)
      Description copied from interface: WebSocketContainer
      Remove a WebSocketSessionListener from the container
      Specified by:
      removeSessionListener in interface WebSocketContainer
      Parameters:
      listener - the listener
      Returns:
      true if listener was present and removed
    • notifySessionListeners

      public void notifySessionListeners(Consumer<WebSocketSessionListener> consumer)
      Description copied from interface: WebSocketContainer
      Notify the Session Listeners of an event.
      Specified by:
      notifySessionListeners in interface WebSocketContainer
      Parameters:
      consumer - the consumer to call for each tracked listener
    • getOpenSessions

      public Collection<Session> getOpenSessions()
      Description copied from interface: WebSocketContainer
      Get the collection of open Sessions being tracked by this container
      Specified by:
      getOpenSessions in interface WebSocketContainer
      Returns:
      the collection of open sessions
    • getBehavior

      public WebSocketBehavior getBehavior()
      Specified by:
      getBehavior in interface WebSocketPolicy
    • getIdleTimeout

      public Duration getIdleTimeout()
      Description copied from interface: WebSocketPolicy
      The duration that a websocket may be idle before being closed by the implementation
      Specified by:
      getIdleTimeout in interface WebSocketPolicy
      Returns:
      the timeout duration
    • getInputBufferSize

      public int getInputBufferSize()
      Description copied from interface: WebSocketPolicy
      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 interface WebSocketPolicy
      Returns:
      the raw network buffer input size.
    • getOutputBufferSize

      public int getOutputBufferSize()
      Description copied from interface: WebSocketPolicy
      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 interface WebSocketPolicy
      Returns:
      the raw network buffer output size.
    • getMaxBinaryMessageSize

      public long getMaxBinaryMessageSize()
      Description copied from interface: WebSocketPolicy
      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 interface WebSocketPolicy
      Returns:
      the maximum size of a binary message
    • getMaxTextMessageSize

      public long getMaxTextMessageSize()
      Description copied from interface: WebSocketPolicy
      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 interface WebSocketPolicy
      Returns:
      the maximum size of a text message.
    • getMaxFrameSize

      public long getMaxFrameSize()
      Description copied from interface: WebSocketPolicy
      The maximum payload size of any WebSocket Frame which can be received.
      Specified by:
      getMaxFrameSize in interface WebSocketPolicy
      Returns:
      the maximum size of a WebSocket Frame.
    • isAutoFragment

      public boolean isAutoFragment()
      Description copied from interface: WebSocketPolicy
      If true, frames are automatically fragmented to respect the maximum frame size.
      Specified by:
      isAutoFragment in interface WebSocketPolicy
      Returns:
      whether to automatically fragment incoming WebSocket Frames.
    • setIdleTimeout

      public void setIdleTimeout(Duration duration)
      Description copied from interface: WebSocketPolicy
      The duration that a websocket may be idle before being closed by the implementation
      Specified by:
      setIdleTimeout in interface WebSocketPolicy
      Parameters:
      duration - the timeout duration (may not be null or negative)
    • setInputBufferSize

      public void setInputBufferSize(int size)
      Description copied from interface: WebSocketPolicy
      The input (read from network layer) buffer size.
      Specified by:
      setInputBufferSize in interface WebSocketPolicy
      Parameters:
      size - the size in bytes
    • setOutputBufferSize

      public void setOutputBufferSize(int size)
      Description copied from interface: WebSocketPolicy
      The output (write to network layer) buffer size.
      Specified by:
      setOutputBufferSize in interface WebSocketPolicy
      Parameters:
      size - the size in bytes
    • setMaxBinaryMessageSize

      public void setMaxBinaryMessageSize(long size)
      Description copied from interface: WebSocketPolicy
      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 interface WebSocketPolicy
      Parameters:
      size - the maximum allowed size of a binary message.
    • setMaxTextMessageSize

      public void setMaxTextMessageSize(long size)
      Description copied from interface: WebSocketPolicy
      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 interface WebSocketPolicy
      Parameters:
      size - the maximum allowed size of a text message.
    • setMaxFrameSize

      public void setMaxFrameSize(long maxFrameSize)
      Description copied from interface: WebSocketPolicy
      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 interface WebSocketPolicy
      Parameters:
      maxFrameSize - the maximum allowed size of a WebSocket Frame.
    • setAutoFragment

      public void setAutoFragment(boolean autoFragment)
      Description copied from interface: WebSocketPolicy
      If set to true, frames are automatically fragmented to respect the maximum frame size.
      Specified by:
      setAutoFragment in interface WebSocketPolicy
      Parameters:
      autoFragment - whether to automatically fragment incoming WebSocket Frames.
    • dump

      public void dump(Appendable out, String indent) throws IOException
      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 interface Dumpable
      Overrides:
      dump in class ContainerLifeCycle
      Parameters:
      out - The appendable to dump to
      indent - The indent to apply after any new lines.
      Throws:
      IOException - if unable to write to Appendable