Package javax.websocket

# Interface Session

All Superinterfaces:
  `AutoCloseable`, `Closeable`

public interface Session extends Closeable

- ## Method Summary

  Modifier and Type
  Method
  Description
  `<T> void`
  `addMessageHandler(Class<T> clazz, MessageHandler.Partial<T> handler)`
  Registers a `MessageHandler` for partial incoming messages.
  `<T> void`
  `addMessageHandler(Class<T> clazz, MessageHandler.Whole<T> handler)`
  Registers a `MessageHandler` for whole incoming messages.
  `void`
  `addMessageHandler(MessageHandler handler)`
  Registers a `MessageHandler` for incoming messages.
  `void`
  `close()`
  Close the connection to the remote end point using the code `CloseReason.CloseCodes.NORMAL_CLOSURE` and an empty reason phrase.
  `void`
  `close(CloseReason closeReason)`
  Close the connection to the remote end point using the specified code and reason phrase.
  `RemoteEndpoint.Async`
  `getAsyncRemote()`
  `RemoteEndpoint.Basic`
  `getBasicRemote()`
  `WebSocketContainer`
  `getContainer()`
  Get the container that created this session.
  `String`
  `getId()`
  Provides a unique identifier for the session.
  `int`
  `getMaxBinaryMessageBufferSize()`
  Get the current maximum buffer size for binary messages.
  `long`
  `getMaxIdleTimeout()`
  Get the idle timeout for this session.
  `int`
  `getMaxTextMessageBufferSize()`
  Get the maximum buffer size for text messages.
  `Set<MessageHandler>`
  `getMessageHandlers()`
  `List<Extension>`
  `getNegotiatedExtensions()`
  `String`
  `getNegotiatedSubprotocol()`
  `Set<Session>`
  `getOpenSessions()`
  Obtain the set of open sessions associated with the same local endpoint as this session.
  `Map<String,String>`
  `getPathParameters()`
  `String`
  `getProtocolVersion()`
  `String`
  `getQueryString()`
  `Map<String,List<String>>`
  `getRequestParameterMap()`
  `URI`
  `getRequestURI()`
  `Principal`
  `getUserPrincipal()`
  `Map<String,Object>`
  `getUserProperties()`
  `boolean`
  `isOpen()`
  `boolean`
  `isSecure()`
  `void`
  `removeMessageHandler(MessageHandler listener)`
  `void`
  `setMaxBinaryMessageBufferSize(int max)`
  Set the current maximum buffer size for binary messages.
  `void`
  `setMaxIdleTimeout(long timeout)`
  Set the idle timeout for this session.
  `void`
  `setMaxTextMessageBufferSize(int max)`
  Set the maximum buffer size for text messages.

- ## Method Details

  - ### getContainer

    WebSocketContainer getContainer()
    Get the container that created this session.
    Returns:
      the container that created this session.

  - ### addMessageHandler

    void addMessageHandler(MessageHandler handler) throws IllegalStateException
    Registers a `MessageHandler` for incoming messages. Only one `MessageHandler` may be registered for each message type (text, binary, pong). The message type will be derived at runtime from the provided `MessageHandler` instance. It is not always possible to do this so it is better to use `addMessageHandler(Class, javax.websocket.MessageHandler.Partial)` or `addMessageHandler(Class, javax.websocket.MessageHandler.Whole)`.
    Parameters:
      `handler` - The message handler for a incoming message
    Throws:
      `IllegalStateException` - If a message handler has already been registered for the associated message type

  - ### getMessageHandlers

    Set<MessageHandler> getMessageHandlers()

  - ### removeMessageHandler

    void removeMessageHandler(MessageHandler listener)

  - ### getProtocolVersion

    String getProtocolVersion()

  - ### getNegotiatedSubprotocol

    String getNegotiatedSubprotocol()

  - ### getNegotiatedExtensions

    List<Extension> getNegotiatedExtensions()

  - ### isSecure

    boolean isSecure()

  - ### isOpen

    boolean isOpen()

  - ### getMaxIdleTimeout

    long getMaxIdleTimeout()
    Get the idle timeout for this session.
    Returns:
      The current idle timeout for this session in milliseconds. Zero or negative values indicate an infinite timeout.

  - ### setMaxIdleTimeout

    void setMaxIdleTimeout(long timeout)
    Set the idle timeout for this session.
    Parameters:
      `timeout` - The new idle timeout for this session in milliseconds. Zero or negative values indicate an infinite timeout.

  - ### setMaxBinaryMessageBufferSize

    void setMaxBinaryMessageBufferSize(int max)
    Set the current maximum buffer size for binary messages.
    Parameters:
      `max` - The new maximum buffer size in bytes

  - ### getMaxBinaryMessageBufferSize

    int getMaxBinaryMessageBufferSize()
    Get the current maximum buffer size for binary messages.
    Returns:
      The current maximum buffer size in bytes

  - ### setMaxTextMessageBufferSize

    void setMaxTextMessageBufferSize(int max)
    Set the maximum buffer size for text messages.
    Parameters:
      `max` - The new maximum buffer size in characters.

  - ### getMaxTextMessageBufferSize

    int getMaxTextMessageBufferSize()
    Get the maximum buffer size for text messages.
    Returns:
      The maximum buffer size in characters.

  - ### getAsyncRemote

    RemoteEndpoint.Async getAsyncRemote()

  - ### getBasicRemote

    RemoteEndpoint.Basic getBasicRemote()

  - ### getId

    String getId()
    Provides a unique identifier for the session. This identifier should not be relied upon to be generated from a secure random source.
    Returns:
      A unique identifier for the session.

  - ### close

    void close() throws IOException
    Close the connection to the remote end point using the code `CloseReason.CloseCodes.NORMAL_CLOSURE` and an empty reason phrase.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Throws:
      `IOException` - if an I/O error occurs while the WebSocket session is being closed.

  - ### close

    void close(CloseReason closeReason) throws IOException
    Close the connection to the remote end point using the specified code and reason phrase.
    Parameters:
      `closeReason` - The reason the WebSocket session is being closed.
    Throws:
      `IOException` - if an I/O error occurs while the WebSocket session is being closed.

  - ### getRequestURI

    URI getRequestURI()

  - ### getRequestParameterMap

    Map<String,List<String>> getRequestParameterMap()

  - ### getQueryString

    String getQueryString()

  - ### getPathParameters

    Map<String,String> getPathParameters()

  - ### getUserProperties

    Map<String,Object> getUserProperties()

  - ### getUserPrincipal

    Principal getUserPrincipal()

  - ### getOpenSessions

    Set<Session> getOpenSessions()
    Obtain the set of open sessions associated with the same local endpoint as this session.
    Returns:
      The set of currently open sessions for the local endpoint that this session is associated with.

  - ### addMessageHandler

    <T> void addMessageHandler(Class<T> clazz, MessageHandler.Partial<T> handler) throws IllegalStateException
    Registers a `MessageHandler` for partial incoming messages. Only one `MessageHandler` may be registered for each message type (text or binary, pong messages are never presented as partial messages).
    Type Parameters:
      `T` - The type of message that the given handler is intended for
    Parameters:
      `clazz` - The Class that implements T
      `handler` - The message handler for a incoming message
    Throws:
      `IllegalStateException` - If a message handler has already been registered for the associated message type
    Since:
      WebSocket 1.1

  - ### addMessageHandler

    <T> void addMessageHandler(Class<T> clazz, MessageHandler.Whole<T> handler) throws IllegalStateException
    Registers a `MessageHandler` for whole incoming messages. Only one `MessageHandler` may be registered for each message type (text, binary, pong).
    Type Parameters:
      `T` - The type of message that the given handler is intended for
    Parameters:
      `clazz` - The Class that implements T
      `handler` - The message handler for a incoming message
    Throws:
      `IllegalStateException` - If a message handler has already been registered for the associated message type
    Since:
      WebSocket 1.1