Class WebSocketRemoteEndpoint

  • All Implemented Interfaces:
    RemoteEndpoint

    public class WebSocketRemoteEndpoint
    extends java.lang.Object
    implements RemoteEndpoint
    Endpoint for Writing messages to the Remote websocket.
    • Field Detail

      • NOOP_CALLBACK

        private static final WriteCallback NOOP_CALLBACK
      • LOG

        private static final org.eclipse.jetty.util.log.Logger LOG
      • msgState

        private final java.util.concurrent.atomic.AtomicInteger msgState
      • numOutgoingFrames

        private final java.util.concurrent.atomic.AtomicInteger numOutgoingFrames
      • batchMode

        private volatile BatchMode batchMode
      • maxNumOutgoingFrames

        private int maxNumOutgoingFrames
    • Method Detail

      • blockingWrite

        private void blockingWrite​(WebSocketFrame frame)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • getInetSocketAddress

        public java.net.InetSocketAddress getInetSocketAddress()
        Get the InetSocketAddress for the established connection.
        Specified by:
        getInetSocketAddress in interface RemoteEndpoint
        Returns:
        the InetSocketAddress for the established connection. (or null, if the connection is no longer established)
      • sendAsyncFrame

        private java.util.concurrent.Future<java.lang.Void> sendAsyncFrame​(WebSocketFrame frame)
        Internal
        Parameters:
        frame - the frame to write
        Returns:
        the future for the network write of the frame
      • sendBytes

        public void sendBytes​(java.nio.ByteBuffer data)
                       throws java.io.IOException
        Blocking write of bytes.
        Specified by:
        sendBytes in interface RemoteEndpoint
        Parameters:
        data - the message to be sent
        Throws:
        java.io.IOException - if unable to send the bytes
      • sendBytesByFuture

        public java.util.concurrent.Future<java.lang.Void> sendBytesByFuture​(java.nio.ByteBuffer data)
        Description copied from interface: RemoteEndpoint
        Initiates the asynchronous transmission of a binary message. This method returns before the message is transmitted. Developers may use the returned Future object to track progress of the transmission.
        Specified by:
        sendBytesByFuture in interface RemoteEndpoint
        Parameters:
        data - the data being sent
        Returns:
        the Future object representing the send operation.
      • sendBytes

        public void sendBytes​(java.nio.ByteBuffer data,
                              WriteCallback callback)
        Description copied from interface: RemoteEndpoint
        Initiates the asynchronous transmission of a binary message. This method returns before the message is transmitted. Developers may provide a callback to be notified when the message has been transmitted or resulted in an error.
        Specified by:
        sendBytes in interface RemoteEndpoint
        Parameters:
        data - the data being sent
        callback - callback to notify of success or failure of the write operation
      • sendPartialBytes

        public void sendPartialBytes​(java.nio.ByteBuffer fragment,
                                     boolean isLast)
                              throws java.io.IOException
        Description copied from interface: RemoteEndpoint
        Send a binary message in pieces, blocking until all of the message has been transmitted. The runtime reads the message in order. Non-final pieces are sent with isLast set to false. The final piece must be sent with isLast set to true.
        Specified by:
        sendPartialBytes in interface RemoteEndpoint
        Parameters:
        fragment - the piece of the message being sent
        isLast - true if this is the last piece of the partial bytes
        Throws:
        java.io.IOException - if unable to send the partial bytes
      • sendPartialString

        public void sendPartialString​(java.lang.String fragment,
                                      boolean isLast)
                               throws java.io.IOException
        Description copied from interface: RemoteEndpoint
        Send a text message in pieces, blocking until all of the message has been transmitted. The runtime reads the message in order. Non-final pieces are sent with isLast set to false. The final piece must be sent with isLast set to true.
        Specified by:
        sendPartialString in interface RemoteEndpoint
        Parameters:
        fragment - the piece of the message being sent
        isLast - true if this is the last piece of the partial bytes
        Throws:
        java.io.IOException - if unable to send the partial bytes
      • sendPing

        public void sendPing​(java.nio.ByteBuffer applicationData)
                      throws java.io.IOException
        Description copied from interface: RemoteEndpoint
        Send a Ping message containing the given application data to the remote endpoint. The corresponding Pong message may be picked up using the MessageHandler.Pong handler.
        Specified by:
        sendPing in interface RemoteEndpoint
        Parameters:
        applicationData - the data to be carried in the ping request
        Throws:
        java.io.IOException - if unable to send the ping
      • sendPong

        public void sendPong​(java.nio.ByteBuffer applicationData)
                      throws java.io.IOException
        Description copied from interface: RemoteEndpoint
        Allows the developer to send an unsolicited Pong message containing the given application data in order to serve as a unidirectional heartbeat for the session.
        Specified by:
        sendPong in interface RemoteEndpoint
        Parameters:
        applicationData - the application data to be carried in the pong response.
        Throws:
        java.io.IOException - if unable to send the pong
      • sendString

        public void sendString​(java.lang.String text)
                        throws java.io.IOException
        Description copied from interface: RemoteEndpoint
        Send a text message, blocking until all bytes of the message has been transmitted.

        Note: this is a blocking call

        Specified by:
        sendString in interface RemoteEndpoint
        Parameters:
        text - the message to be sent
        Throws:
        java.io.IOException - if unable to send the text message
      • sendStringByFuture

        public java.util.concurrent.Future<java.lang.Void> sendStringByFuture​(java.lang.String text)
        Description copied from interface: RemoteEndpoint
        Initiates the asynchronous transmission of a text message. This method may return before the message is transmitted. Developers may use the returned Future object to track progress of the transmission.
        Specified by:
        sendStringByFuture in interface RemoteEndpoint
        Parameters:
        text - the text being sent
        Returns:
        the Future object representing the send operation.
      • sendString

        public void sendString​(java.lang.String text,
                               WriteCallback callback)
        Description copied from interface: RemoteEndpoint
        Initiates the asynchronous transmission of a text message. This method may return before the message is transmitted. Developers may provide a callback to be notified when the message has been transmitted or resulted in an error.
        Specified by:
        sendString in interface RemoteEndpoint
        Parameters:
        text - the text being sent
        callback - callback to notify of success or failure of the write operation
      • getMaxOutgoingFrames

        public int getMaxOutgoingFrames()
        Description copied from interface: RemoteEndpoint
        Get the maximum number of data frames allowed to be waiting to be sent at any one time. The default value is -1, this indicates there is no limit on how many frames can be queued to be sent by the implementation. If the limit is exceeded, subsequent frames sent are failed with a WritePendingException but the connection is not failed and will remain open.
        Specified by:
        getMaxOutgoingFrames in interface RemoteEndpoint
        Returns:
        the max number of frames.
      • setMaxOutgoingFrames

        public void setMaxOutgoingFrames​(int maxOutgoingFrames)
        Description copied from interface: RemoteEndpoint
        Set the maximum number of data frames allowed to be waiting to be sent at any one time. The default value is -1, this indicates there is no limit on how many frames can be queued to be sent by the implementation. If the limit is exceeded, subsequent frames sent are failed with a WritePendingException but the connection is not failed and will remain open.
        Specified by:
        setMaxOutgoingFrames in interface RemoteEndpoint
        Parameters:
        maxOutgoingFrames - the max number of frames.
      • flush

        public void flush()
                   throws java.io.IOException
        Description copied from interface: RemoteEndpoint
        Flushes messages that may have been batched by the implementation.
        Specified by:
        flush in interface RemoteEndpoint
        Throws:
        java.io.IOException - if the flush fails
        See Also:
        RemoteEndpoint.getBatchMode()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object