Class JettyWebSocketSession

java.lang.Object
org.springframework.web.socket.adapter.AbstractWebSocketSession<org.eclipse.jetty.websocket.api.Session>
org.springframework.web.socket.adapter.jetty.JettyWebSocketSession
All Implemented Interfaces:
Closeable, AutoCloseable, NativeWebSocketSession, WebSocketSession

public class JettyWebSocketSession extends AbstractWebSocketSession<org.eclipse.jetty.websocket.api.Session>
A WebSocketSession for use with the Jetty 9.4 WebSocket API.
Since:
4.0
Author:
Phillip Webb, Rossen Stoyanchev, Brian Clozel, Juergen Hoeller
  • Constructor Details

    • JettyWebSocketSession

      public JettyWebSocketSession(Map<String,Object> attributes)
      Create a new JettyWebSocketSession instance.
      Parameters:
      attributes - the attributes from the HTTP handshake to associate with the WebSocket session
    • JettyWebSocketSession

      public JettyWebSocketSession(Map<String,Object> attributes, @Nullable Principal user)
      Create a new JettyWebSocketSession instance associated with the given user.
      Parameters:
      attributes - the attributes from the HTTP handshake to associate with the WebSocket session; the provided attributes are copied, the original map is not used.
      user - the user associated with the session; if null we'll fallback on the user available via Session.getUpgradeRequest()
  • Method Details

    • getId

      public String getId()
      Description copied from interface: WebSocketSession
      Return a unique session identifier.
    • getUri

      @Nullable public URI getUri()
      Description copied from interface: WebSocketSession
      Return the URI used to open the WebSocket connection.
    • getHandshakeHeaders

      public HttpHeaders getHandshakeHeaders()
      Description copied from interface: WebSocketSession
      Return the headers used in the handshake request (never null).
    • getAcceptedProtocol

      public String getAcceptedProtocol()
      Description copied from interface: WebSocketSession
      Return the negotiated sub-protocol.
      Returns:
      the protocol identifier, or null if no protocol was specified or negotiated successfully
    • getExtensions

      public List<WebSocketExtension> getExtensions()
      Description copied from interface: WebSocketSession
      Determine the negotiated extensions.
      Returns:
      the list of extensions, or an empty list if no extension was specified or negotiated successfully
    • getPrincipal

      public Principal getPrincipal()
      Description copied from interface: WebSocketSession
      Return a Principal instance containing the name of the authenticated user.

      If the user has not been authenticated, the method returns null.

    • getLocalAddress

      public InetSocketAddress getLocalAddress()
      Description copied from interface: WebSocketSession
      Return the address on which the request was received.
    • getRemoteAddress

      public InetSocketAddress getRemoteAddress()
      Description copied from interface: WebSocketSession
      Return the address of the remote client.
    • setTextMessageSizeLimit

      public void setTextMessageSizeLimit(int messageSizeLimit)
      This method is a no-op for Jetty. As per Session.getPolicy(), the returned WebSocketPolicy is read-only and changing it has no effect.
    • getTextMessageSizeLimit

      public int getTextMessageSizeLimit()
      Description copied from interface: WebSocketSession
      Get the configured maximum size for an incoming text message.
    • setBinaryMessageSizeLimit

      public void setBinaryMessageSizeLimit(int messageSizeLimit)
      This method is a no-op for Jetty. As per Session.getPolicy(), the returned WebSocketPolicy is read-only and changing it has no effect.
    • getBinaryMessageSizeLimit

      public int getBinaryMessageSizeLimit()
      Description copied from interface: WebSocketSession
      Get the configured maximum size for an incoming binary message.
    • isOpen

      public boolean isOpen()
      Description copied from interface: WebSocketSession
      Whether the underlying connection is open.
    • initializeNativeSession

      public void initializeNativeSession(org.eclipse.jetty.websocket.api.Session session)
      Overrides:
      initializeNativeSession in class AbstractWebSocketSession<org.eclipse.jetty.websocket.api.Session>
    • sendTextMessage

      protected void sendTextMessage(TextMessage message) throws IOException
      Specified by:
      sendTextMessage in class AbstractWebSocketSession<org.eclipse.jetty.websocket.api.Session>
      Throws:
      IOException
    • sendBinaryMessage

      protected void sendBinaryMessage(BinaryMessage message) throws IOException
      Specified by:
      sendBinaryMessage in class AbstractWebSocketSession<org.eclipse.jetty.websocket.api.Session>
      Throws:
      IOException
    • sendPingMessage

      protected void sendPingMessage(PingMessage message) throws IOException
      Specified by:
      sendPingMessage in class AbstractWebSocketSession<org.eclipse.jetty.websocket.api.Session>
      Throws:
      IOException
    • sendPongMessage

      protected void sendPongMessage(PongMessage message) throws IOException
      Specified by:
      sendPongMessage in class AbstractWebSocketSession<org.eclipse.jetty.websocket.api.Session>
      Throws:
      IOException
    • closeInternal

      protected void closeInternal(CloseStatus status) throws IOException
      Specified by:
      closeInternal in class AbstractWebSocketSession<org.eclipse.jetty.websocket.api.Session>
      Throws:
      IOException