Interface ServerSession

All Superinterfaces:
Session
All Known Implementing Classes:
ServerSessionImpl

public interface ServerSession extends Session

Objects implementing this interface are the server-side representation of remote Bayeux clients.

ServerSession contains the queue of messages to be delivered to the client; messages are normally queued on a ServerSession by publishing them to a channel to which the session is subscribed (via ServerChannel.publish(Session, ServerMessage.Mutable, Promise).

The deliver(Session, ServerMessage.Mutable, Promise) and deliver(Session, String, Object, Promise) methods may be used to directly queue messages to a session without publishing them to all subscribers of a channel.

  • Method Details

    • addExtension

      void addExtension(ServerSession.Extension extension)

      Adds the given extension to this session.

      Parameters:
      extension - the extension to add
      See Also:
    • removeExtension

      void removeExtension(ServerSession.Extension extension)

      Removes the given extension from this session.

      Parameters:
      extension - the extension to remove
      See Also:
    • getExtensions

      List<ServerSession.Extension> getExtensions()
      Returns:
      an immutable list of extensions present in this ServerSession instance
      See Also:
    • addListener

      void addListener(ServerSession.ServerSessionListener listener)

      Adds the given listener to this session.

      Parameters:
      listener - the listener to add
      See Also:
    • removeListener

      void removeListener(ServerSession.ServerSessionListener listener)

      Removes the given listener from this session.

      Parameters:
      listener - the listener to remove
      See Also:
    • getServerTransport

      ServerTransport getServerTransport()
      Returns:
      the ServerTransport associated with this session
    • isLocalSession

      boolean isLocalSession()
      Returns:
      whether this is a session for a local client on server-side
    • getLocalSession

      LocalSession getLocalSession()
      Returns:
      the LocalSession associated with this session, or null if this is a session representing a remote client.
    • deliver

      void deliver(Session sender, ServerMessage.Mutable message, Promise<Boolean> promise)

      Delivers the given message to this session.

      This is different from ServerChannel.publish(Session, ServerMessage.Mutable, Promise) as the message is delivered only to this session and not to all subscribers of the channel.

      The message should still have a channel id specified, so that the ClientSession may identify the listeners the message should be delivered to.

      Parameters:
      sender - the session delivering the message
      message - the message to deliver
      promise - the promise to notify with the result of the deliver
      See Also:
    • deliver

      void deliver(Session sender, String channel, Object data, Promise<Boolean> promise)

      Delivers the given information to this session.

      Parameters:
      sender - the session delivering the message
      channel - the channel of the message
      data - the data of the message
      promise - the promise to notify with the result of the deliver
      See Also:
    • getSubscriptions

      Set<ServerChannel> getSubscriptions()
      Returns:
      the set of channels to which this session is subscribed to
    • getUserAgent

      String getUserAgent()
      Returns:
      The string indicating the client user agent, or null if not known
    • getInterval

      long getInterval()
      Returns:
      the period of time, in milliseconds, that the client associated with this session will wait before issuing a connect message, or -1 if the default value is used
      See Also:
    • setInterval

      void setInterval(long interval)
      Parameters:
      interval - the period of time, in milliseconds, that the client associated with this session will wait before issuing a connect message
    • getTimeout

      long getTimeout()
      Returns:
      the period of time, in milliseconds, that the server will hold connect messages for this session or -1 if the default value is used
      See Also:
    • setTimeout

      void setTimeout(long timeout)
      Parameters:
      timeout - the period of time, in milliseconds, that the server will hold connect messages for this session
    • getMaxInterval

      long getMaxInterval()
      Returns:
      the max period of time, in milliseconds, that the server waits before expiring the session when the client does not send messages to the server, or -1 if the default value is used
    • setMaxInterval

      void setMaxInterval(long maxInterval)
      Parameters:
      maxInterval - the max period of time, in milliseconds, that the server waits before expiring the session
    • isMetaConnectDeliveryOnly

      boolean isMetaConnectDeliveryOnly()
      Returns:
      whether delivery of messages only happens via the /meta/connect channel
    • setMetaConnectDeliveryOnly

      void setMetaConnectDeliveryOnly(boolean metaConnectDeliveryOnly)

      Sets whether delivery of messages only happen via the /meta/connect channel.

      Transports that use more than one connection to the server (e.g. HTTP transports) may deliver some messages in one connection and some in another connection, causing messages to arrive out-of-order.

      Forcing messages to be delivered only via the /meta/connect channel guarantees server-to-client message ordering.

      Parameters:
      metaConnectDeliveryOnly - whether delivery of messages only happens via the /meta/connect channel
    • isBroadcastToPublisher

      boolean isBroadcastToPublisher()
      Returns:
      whether this session sends messages back to itself
    • setBroadcastToPublisher

      void setBroadcastToPublisher(boolean broadcastToPublisher)
      Sets whether this session sends messages back to itself.
      Parameters:
      broadcastToPublisher - whether this session sends messages back to itself