Class WebSocketFrame
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
appendPayloadBinary
(StringBuilder builder) private void
appendPayloadClose
(StringBuilder builder) private boolean
appendPayloadCommon
(StringBuilder builder) private void
appendPayloadText
(StringBuilder builder) private static byte[]
compress
(byte[] data, PerMessageCompressionExtension pmce) (package private) static WebSocketFrame
compressFrame
(WebSocketFrame frame, PerMessageCompressionExtension pmce) static WebSocketFrame
createBinaryFrame
(byte[] payload) Create a binary frame.static WebSocketFrame
Create a close frame.static WebSocketFrame
createCloseFrame
(int closeCode) Create a close frame.static WebSocketFrame
createCloseFrame
(int closeCode, String reason) Create a close frame.static WebSocketFrame
Create a continuation frame.static WebSocketFrame
createContinuationFrame
(byte[] payload) Create a continuation frame.static WebSocketFrame
createContinuationFrame
(String payload) Create a continuation frame.static WebSocketFrame
Create a ping frame.static WebSocketFrame
createPingFrame
(byte[] payload) Create a ping frame.static WebSocketFrame
createPingFrame
(String payload) Create a ping frame.static WebSocketFrame
Create a pong frame.static WebSocketFrame
createPongFrame
(byte[] payload) Create a pong frame.static WebSocketFrame
createPongFrame
(String payload) Create a pong frame.static WebSocketFrame
createTextFrame
(String payload) Create a text frame.int
Parse the first two bytes of the payload as a close code.Parse the third and subsequent bytes of the payload as a close reason.boolean
getFin()
Get the value of FIN bit.(package private) boolean
getMask()
Get the value of MASK bit.int
Get the opcode.byte[]
Get the unmasked payload.int
Get the payload length.Get the unmasked payload as a text.boolean
getRsv1()
Get the value of RSV1 bit.boolean
getRsv2()
Get the value of RSV2 bit.boolean
getRsv3()
Get the value of RSV3 bit.boolean
Check if this frame has payload.boolean
Check if this frame is a binary frame.boolean
Check if this frame is a close frame.boolean
Check if this frame is a continuation frame.boolean
Check if this frame is a control frame.boolean
Check if this frame is a data frame.boolean
Check if this frame is a ping frame.boolean
Check if this frame is a pong frame.boolean
Check if this frame is a text frame.(package private) static byte[]
mask
(byte[] maskingKey, byte[] payload) Mask/unmask payload.setCloseFramePayload
(int closeCode, String reason) Set the payload that conforms to the payload format of close frames.setFin
(boolean fin) Set the value of FIN bit.(package private) WebSocketFrame
setMask
(boolean mask) Set the value of MASK bit.setOpcode
(int opcode) Set the opcodesetPayload
(byte[] payload) Set the unmasked payload.setPayload
(String payload) Set the payload.setRsv1
(boolean rsv1) Set the value of RSV1 bit.setRsv2
(boolean rsv2) Set the value of RSV2 bit.setRsv3
(boolean rsv3) Set the value of RSV3 bit.private static List
<WebSocketFrame> split
(WebSocketFrame frame, int maxPayloadSize) (package private) static List
<WebSocketFrame> splitIfNecessary
(WebSocketFrame frame, int maxPayloadSize, PerMessageCompressionExtension pmce) toString()
-
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
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
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
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
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
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
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
Get the unmasked payload as a text.- Returns:
- A string constructed by interrupting the payload as a UTF-8 bytes.
-
setPayload
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 asnull
.- Returns:
this
object.
-
setPayload
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 asnull
.- Returns:
this
object.
-
setCloseFramePayload
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 asnull
.- 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
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
-
appendPayloadCommon
-
appendPayloadText
-
appendPayloadClose
-
appendPayloadBinary
-
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 isnull
.
-
createContinuationFrame
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
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
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
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
Create a close frame.- Returns:
- A WebSocket frame whose FIN bit is true, opcode is
CLOSE
and payload isnull
.
-
createCloseFrame
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
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
Create a ping frame.- Returns:
- A WebSocket frame whose FIN bit is true, opcode is
PING
and payload isnull
.
-
createPingFrame
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
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
Create a pong frame.- Returns:
- A WebSocket frame whose FIN bit is true, opcode is
PONG
and payload isnull
.
-
createPongFrame
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
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. Ifnull
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
-
compress
-
splitIfNecessary
static List<WebSocketFrame> splitIfNecessary(WebSocketFrame frame, int maxPayloadSize, PerMessageCompressionExtension pmce) -
split
-