Class WebSocketFrame

java.lang.Object
com.neovisionaries.ws.client.WebSocketFrame

public class WebSocketFrame extends Object
WebSocket frame.
See Also:
  • Field Details

    • mFin

      private boolean mFin
    • mRsv1

      private boolean mRsv1
    • mRsv2

      private boolean mRsv2
    • mRsv3

      private boolean mRsv3
    • mOpcode

      private int mOpcode
    • mMask

      private boolean mMask
    • mPayload

      private byte[] mPayload
  • Constructor Details

    • WebSocketFrame

      public WebSocketFrame()
  • Method Details

    • getFin

      public boolean getFin()
      Get the value of FIN bit.
      Returns:
      The value of FIN bit.
    • setFin

      public WebSocketFrame setFin(boolean fin)
      Set the value of FIN bit.
      Parameters:
      fin - The value of FIN bit.
      Returns:
      this object.
    • getRsv1

      public boolean getRsv1()
      Get the value of RSV1 bit.
      Returns:
      The value of RSV1 bit.
    • setRsv1

      public WebSocketFrame setRsv1(boolean rsv1)
      Set the value of RSV1 bit.
      Parameters:
      rsv1 - The value of RSV1 bit.
      Returns:
      this object.
    • getRsv2

      public boolean getRsv2()
      Get the value of RSV2 bit.
      Returns:
      The value of RSV2 bit.
    • setRsv2

      public WebSocketFrame setRsv2(boolean rsv2)
      Set the value of RSV2 bit.
      Parameters:
      rsv2 - The value of RSV2 bit.
      Returns:
      this object.
    • getRsv3

      public boolean getRsv3()
      Get the value of RSV3 bit.
      Returns:
      The value of RSV3 bit.
    • setRsv3

      public WebSocketFrame setRsv3(boolean rsv3)
      Set the value of RSV3 bit.
      Parameters:
      rsv3 - The value of RSV3 bit.
      Returns:
      this object.
    • getOpcode

      public int getOpcode()
      Get the opcode.
      WebSocket opcode
      Value Description
      0x0 Frame continuation
      0x1 Text frame
      0x2 Binary frame
      0x3-0x7 Reserved
      0x8 Connection close
      0x9 Ping
      0xA Pong
      0xB-0xF Reserved
      Returns:
      The opcode.
      See Also:
    • setOpcode

      public WebSocketFrame setOpcode(int opcode)
      Set the opcode
      Parameters:
      opcode - The opcode.
      Returns:
      this object.
      See Also:
    • isContinuationFrame

      public boolean isContinuationFrame()
      Check if this frame is a continuation frame.

      This method returns true when the value of the opcode is 0x0 (WebSocketOpcode.CONTINUATION).

      Returns:
      true if this frame is a continuation frame (= if the opcode is 0x0).
    • isTextFrame

      public boolean isTextFrame()
      Check if this frame is a text frame.

      This method returns true when the value of the opcode is 0x1 (WebSocketOpcode.TEXT).

      Returns:
      true if this frame is a text frame (= if the opcode is 0x1).
    • isBinaryFrame

      public boolean isBinaryFrame()
      Check if this frame is a binary frame.

      This method returns true when the value of the opcode is 0x2 (WebSocketOpcode.BINARY).

      Returns:
      true if this frame is a binary frame (= if the opcode is 0x2).
    • isCloseFrame

      public boolean isCloseFrame()
      Check if this frame is a close frame.

      This method returns true when the value of the opcode is 0x8 (WebSocketOpcode.CLOSE).

      Returns:
      true if this frame is a close frame (= if the opcode is 0x8).
    • isPingFrame

      public boolean isPingFrame()
      Check if this frame is a ping frame.

      This method returns true when the value of the opcode is 0x9 (WebSocketOpcode.PING).

      Returns:
      true if this frame is a ping frame (= if the opcode is 0x9).
    • isPongFrame

      public boolean isPongFrame()
      Check if this frame is a pong frame.

      This method returns true when the value of the opcode is 0xA (WebSocketOpcode.PONG).

      Returns:
      true if this frame is a pong frame (= if the opcode is 0xA).
    • isDataFrame

      public boolean isDataFrame()
      Check if this frame is a data frame.

      This method returns true when the value of the opcode is in between 0x1 and 0x7.

      Returns:
      true if this frame is a data frame (= if the opcode is in between 0x1 and 0x7).
    • isControlFrame

      public boolean isControlFrame()
      Check if this frame is a control frame.

      This method returns true when the value of the opcode is in between 0x8 and 0xF.

      Returns:
      true if this frame is a control frame (= if the opcode is in between 0x8 and 0xF).
    • getMask

      boolean getMask()
      Get the value of MASK bit.
      Returns:
      The value of MASK bit.
    • setMask

      WebSocketFrame setMask(boolean mask)
      Set the value of MASK bit.
      Parameters:
      mask - The value of MASK bit.
      Returns:
      this object.
    • hasPayload

      public boolean hasPayload()
      Check if this frame has payload.
      Returns:
      true if this frame has payload.
    • getPayloadLength

      public int getPayloadLength()
      Get the payload length.
      Returns:
      The payload length.
    • getPayload

      public byte[] getPayload()
      Get the unmasked payload.
      Returns:
      The unmasked payload. null may be returned.
    • getPayloadText

      public String getPayloadText()
      Get the unmasked payload as a text.
      Returns:
      A string constructed by interrupting the payload as a UTF-8 bytes.
    • setPayload

      public WebSocketFrame setPayload(byte[] payload)
      Set the unmasked payload.

      Note that the payload length of a control frame must be 125 bytes or less.

      Parameters:
      payload - The unmasked payload. null is accepted. An empty byte array is treated in the same way as null.
      Returns:
      this object.
    • setPayload

      public WebSocketFrame setPayload(String payload)
      Set the payload. The given string is converted to a byte array in UTF-8 encoding.

      Note that the payload length of a control frame must be 125 bytes or less.

      Parameters:
      payload - The unmasked payload. null is accepted. An empty string is treated in the same way as null.
      Returns:
      this object.
    • setCloseFramePayload

      public WebSocketFrame setCloseFramePayload(int closeCode, String reason)
      Set the payload that conforms to the payload format of close frames.

      The given parameters are encoded based on the rules described in "5.5.1. Close" of RFC 6455.

      Note that the reason should not be too long because the payload length of a control frame must be 125 bytes or less.

      Parameters:
      closeCode - The close code.
      reason - The reason. null is accepted. An empty string is treated in the same way as null.
      Returns:
      this object.
      See Also:
    • getCloseCode

      public int getCloseCode()
      Parse the first two bytes of the payload as a close code.

      If any payload is not set or the length of the payload is less than 2, this method returns 1005 (WebSocketCloseCode.NONE).

      The value returned from this method is meaningless if this frame is not a close frame.

      Returns:
      The close code.
      See Also:
    • getCloseReason

      public String getCloseReason()
      Parse the third and subsequent bytes of the payload as a close reason.

      If any payload is not set or the length of the payload is less than 3, this method returns null.

      The value returned from this method is meaningless if this frame is not a close frame.

      Returns:
      The close reason.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • appendPayloadCommon

      private boolean appendPayloadCommon(StringBuilder builder)
    • appendPayloadText

      private void appendPayloadText(StringBuilder builder)
    • appendPayloadClose

      private void appendPayloadClose(StringBuilder builder)
    • appendPayloadBinary

      private void appendPayloadBinary(StringBuilder builder)
    • createContinuationFrame

      public static WebSocketFrame createContinuationFrame()
      Create a continuation frame. Note that the FIN bit of the returned frame is false.
      Returns:
      A WebSocket frame whose FIN bit is false, opcode is CONTINUATION and payload is null.
    • createContinuationFrame

      public static WebSocketFrame createContinuationFrame(byte[] payload)
      Create a continuation frame. Note that the FIN bit of the returned frame is false.
      Parameters:
      payload - The payload for a newly create frame.
      Returns:
      A WebSocket frame whose FIN bit is false, opcode is CONTINUATION and payload is the given one.
    • createContinuationFrame

      public static WebSocketFrame createContinuationFrame(String payload)
      Create a continuation frame. Note that the FIN bit of the returned frame is false.
      Parameters:
      payload - The payload for a newly create frame.
      Returns:
      A WebSocket frame whose FIN bit is false, opcode is CONTINUATION and payload is the given one.
    • createTextFrame

      public static WebSocketFrame createTextFrame(String payload)
      Create a text frame.
      Parameters:
      payload - The payload for a newly created frame.
      Returns:
      A WebSocket frame whose FIN bit is true, opcode is TEXT and payload is the given one.
    • createBinaryFrame

      public static WebSocketFrame createBinaryFrame(byte[] payload)
      Create a binary frame.
      Parameters:
      payload - The payload for a newly created frame.
      Returns:
      A WebSocket frame whose FIN bit is true, opcode is BINARY and payload is the given one.
    • createCloseFrame

      public static WebSocketFrame createCloseFrame()
      Create a close frame.
      Returns:
      A WebSocket frame whose FIN bit is true, opcode is CLOSE and payload is null.
    • createCloseFrame

      public static WebSocketFrame createCloseFrame(int closeCode)
      Create a close frame.
      Parameters:
      closeCode - The close code.
      Returns:
      A WebSocket frame whose FIN bit is true, opcode is CLOSE and payload contains a close code.
      See Also:
    • createCloseFrame

      public static WebSocketFrame createCloseFrame(int closeCode, String reason)
      Create a close frame.
      Parameters:
      closeCode - The close code.
      reason - The close reason. Note that a control frame's payload length must be 125 bytes or less (RFC 6455, 5.5. Control Frames).
      Returns:
      A WebSocket frame whose FIN bit is true, opcode is CLOSE and payload contains a close code and a close reason.
      See Also:
    • createPingFrame

      public static WebSocketFrame createPingFrame()
      Create a ping frame.
      Returns:
      A WebSocket frame whose FIN bit is true, opcode is PING and payload is null.
    • createPingFrame

      public static WebSocketFrame createPingFrame(byte[] payload)
      Create a ping frame.
      Parameters:
      payload - The payload for a newly created frame. Note that a control frame's payload length must be 125 bytes or less (RFC 6455, 5.5. Control Frames).
      Returns:
      A WebSocket frame whose FIN bit is true, opcode is PING and payload is the given one.
    • createPingFrame

      public static WebSocketFrame createPingFrame(String payload)
      Create a ping frame.
      Parameters:
      payload - The payload for a newly created frame. Note that a control frame's payload length must be 125 bytes or less (RFC 6455, 5.5. Control Frames).
      Returns:
      A WebSocket frame whose FIN bit is true, opcode is PING and payload is the given one.
    • createPongFrame

      public static WebSocketFrame createPongFrame()
      Create a pong frame.
      Returns:
      A WebSocket frame whose FIN bit is true, opcode is PONG and payload is null.
    • createPongFrame

      public static WebSocketFrame createPongFrame(byte[] payload)
      Create a pong frame.
      Parameters:
      payload - The payload for a newly created frame. Note that a control frame's payload length must be 125 bytes or less (RFC 6455, 5.5. Control Frames).
      Returns:
      A WebSocket frame whose FIN bit is true, opcode is PONG and payload is the given one.
    • createPongFrame

      public static WebSocketFrame createPongFrame(String payload)
      Create a pong frame.
      Parameters:
      payload - The payload for a newly created frame. Note that a control frame's payload length must be 125 bytes or less (RFC 6455, 5.5. Control Frames).
      Returns:
      A WebSocket frame whose FIN bit is true, opcode is PONG and payload is the given one.
    • mask

      static byte[] mask(byte[] maskingKey, byte[] payload)
      Mask/unmask payload.

      The logic of masking/unmasking is described in "5.3. Client-to-Server Masking" in RFC 6455.

      Parameters:
      maskingKey - The masking key. If null is given or the length of the masking key is less than 4, nothing is performed.
      payload - Payload to be masked/unmasked.
      Returns:
      payload.
      See Also:
    • compressFrame

      static WebSocketFrame compressFrame(WebSocketFrame frame, PerMessageCompressionExtension pmce)
    • compress

      private static byte[] compress(byte[] data, PerMessageCompressionExtension pmce)
    • splitIfNecessary

      static List<WebSocketFrame> splitIfNecessary(WebSocketFrame frame, int maxPayloadSize, PerMessageCompressionExtension pmce)
    • split

      private static List<WebSocketFrame> split(WebSocketFrame frame, int maxPayloadSize)