Interface FrameChannel

All Known Implementing Classes:
FrameConnection, ServiceChannel

public interface FrameChannel
The FrameChannel represents a full duplex communication channel as defined by RFC 6455. Any instance of this will provide a means to perform asynchronous writes and reads to a remote client using a lightweight framing protocol. A frame is a finite length sequence of bytes that can hold either text or binary data. Also, control frames are used to perform heartbeat monitoring and closure.

For convenience frames can be consumed from the socket via a callback to a registered listener. This avoids having to poll each socket for data and provides a asynchronous event driven model of communication, which greatly reduces overhead and complication.

See Also:
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    This is used to close the connection without a specific reason.
    void
    close(Reason reason)
    This is used to close the connection with a specific reason.
    void
    This is used to register a FrameListener to this instance.
    void
    This is used to remove a FrameListener from this instance.
    void
    send(byte[] data)
    This is used to send data to the connected client.
    void
    send(String text)
    This is used to send text to the connected client.
    void
    send(Frame frame)
    This is used to send data to the connected client.
  • Method Details

    • send

      void send(byte[] data) throws IOException
      This is used to send data to the connected client. To prevent an application code from causing resource issues this will block as soon as a configured linked list of mapped memory buffers has been exhausted. Caution should be taken when writing a broadcast implementation that can write to multiple sockets as a badly behaving socket that has filled its output buffering capacity can cause congestion.
      Parameters:
      data - this is the data that is to be sent
      Throws:
      IOException
    • send

      void send(String text) throws IOException
      This is used to send text to the connected client. To prevent an application code from causing resource issues this will block as soon as a configured linked list of mapped memory buffers has been exhausted. Caution should be taken when writing a broadcast implementation that can write to multiple sockets as a badly behaving socket that has filled its output buffering capacity can cause congestion.
      Parameters:
      text - this is the text that is to be sent
      Throws:
      IOException
    • send

      void send(Frame frame) throws IOException
      This is used to send data to the connected client. To prevent an application code from causing resource issues this will block as soon as a configured linked list of mapped memory buffers has been exhausted. Caution should be taken when writing a broadcast implementation that can write to multiple sockets as a badly behaving socket that has filled its output buffering capacity can cause congestion.
      Parameters:
      frame - this is the frame that is to be sent
      Throws:
      IOException
    • register

      void register(FrameListener listener) throws IOException
      This is used to register a FrameListener to this instance. The registered listener will receive all user frames and control frames sent from the client. Also, when the frame is closed or when an unexpected error occurs the listener is notified. Any number of listeners can be registered at any time.
      Parameters:
      listener - this is the listener that is to be registered
      Throws:
      IOException
    • remove

      void remove(FrameListener listener) throws IOException
      This is used to remove a FrameListener from this instance. After removal the listener will no longer receive any user frames or control messages from this specific instance.
      Parameters:
      listener - this is the listener to be removed
      Throws:
      IOException
    • close

      void close(Reason reason) throws IOException
      This is used to close the connection with a specific reason. The close reason will be sent as a control frame before the TCP connection is terminated.
      Parameters:
      reason - the reason for closing the connection
      Throws:
      IOException
    • close

      void close() throws IOException
      This is used to close the connection without a specific reason. The close reason will be sent as a control frame before the TCP connection is terminated.
      Throws:
      IOException