接口 WebSocket

所有已知实现类:
RealWebSocket

public interface WebSocket
A non-blocking interface to a web socket. Use the factory to create instances; usually this is OkHttpClient.

Web Socket Lifecycle

Upon normal operation each web socket progresses through a sequence of states:

  • Connecting: the initial state of each web socket. Messages may be enqueued but they won't be transmitted until the web socket is open.
  • Open: the web socket has been accepted by the remote peer and is fully operational. Messages in either direction are enqueued for immediate transmission.
  • Closing: one of the peers on the web socket has initiated a graceful shutdown. The web socket will continue to transmit already-enqueued messages but will refuse to enqueue new ones.
  • Closed: the web socket has transmitted all of its messages and has received all messages from the peer.

Web sockets may fail due to HTTP upgrade problems, connectivity problems, or if either peer chooses to short-circuit the graceful shutdown process:

  • Canceled: the web socket connection failed. Messages that were successfully enqueued by either peer may not have been transmitted to the other.

Note that the state progression is independent for each peer. Arriving at a gracefully-closed state indicates that a peer has sent all of its outgoing messages and received all of its incoming messages. But it does not guarantee that the other peer will successfully receive all of its incoming messages.

  • 嵌套类概要

    嵌套类
    修饰符和类型
    接口
    说明
    static interface 
     
  • 方法概要

    修饰符和类型
    方法
    说明
    void
    Immediately and violently release resources held by this web socket, discarding any enqueued messages.
    boolean
    close(int code, String reason)
    Attempts to initiate a graceful shutdown of this web socket.
    long
    Returns the size in bytes of all messages enqueued to be transmitted to the server.
    Returns the original request that initiated this web socket.
    boolean
    Attempts to enqueue bytes to be sent as a the data of a binary (type 0x2) message.
    boolean
    send(String text)
    Attempts to enqueue text to be UTF-8 encoded and sent as a the data of a text (type 0x1) message.
  • 方法详细资料

    • request

      Request request()
      Returns the original request that initiated this web socket.
    • queueSize

      long queueSize()
      Returns the size in bytes of all messages enqueued to be transmitted to the server. This doesn't include framing overhead. It also doesn't include any bytes buffered by the operating system or network intermediaries. This method returns 0 if no messages are waiting in the queue. If may return a nonzero value after the web socket has been canceled; this indicates that enqueued messages were not transmitted.
    • send

      boolean send(String text)
      Attempts to enqueue text to be UTF-8 encoded and sent as a the data of a text (type 0x1) message.

      This method returns true if the message was enqueued. Messages that would overflow the outgoing message buffer will be rejected and trigger a graceful shutdown of this web socket. This method returns false in that case, and in any other case where this web socket is closing, closed, or canceled.

      This method returns immediately.

    • send

      boolean send(ByteString bytes)
      Attempts to enqueue bytes to be sent as a the data of a binary (type 0x2) message.

      This method returns true if the message was enqueued. Messages that would overflow the outgoing message buffer (16 MiB) will be rejected and trigger a graceful shutdown of this web socket. This method returns false in that case, and in any other case where this web socket is closing, closed, or canceled.

      This method returns immediately.

    • close

      boolean close(int code, @Nullable String reason)
      Attempts to initiate a graceful shutdown of this web socket. Any already-enqueued messages will be transmitted before the close message is sent but subsequent calls to send(java.lang.String) will return false and their messages will not be enqueued.

      This returns true if a graceful shutdown was initiated by this call. It returns false if a graceful shutdown was already underway or if the web socket is already closed or canceled.

      参数:
      code - Status code as defined by Section 7.4 of RFC 6455.
      reason - Reason for shutting down or null.
      抛出:
      IllegalArgumentException - if code is invalid.
    • cancel

      void cancel()
      Immediately and violently release resources held by this web socket, discarding any enqueued messages. This does nothing if the web socket has already been closed or canceled.