Class WebSocketFrame
- java.lang.Object
-
- com.neovisionaries.ws.client.WebSocketFrame
-
public class WebSocketFrame extends java.lang.Object
WebSocket frame.- See Also:
- RFC 6455, 5. Data Framing
-
-
Constructor Summary
Constructors Constructor Description WebSocketFrame()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
appendPayloadBinary(java.lang.StringBuilder builder)
private void
appendPayloadClose(java.lang.StringBuilder builder)
private boolean
appendPayloadCommon(java.lang.StringBuilder builder)
private void
appendPayloadText(java.lang.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
createCloseFrame()
Create a close frame.static WebSocketFrame
createCloseFrame(int closeCode)
Create a close frame.static WebSocketFrame
createCloseFrame(int closeCode, java.lang.String reason)
Create a close frame.static WebSocketFrame
createContinuationFrame()
Create a continuation frame.static WebSocketFrame
createContinuationFrame(byte[] payload)
Create a continuation frame.static WebSocketFrame
createContinuationFrame(java.lang.String payload)
Create a continuation frame.static WebSocketFrame
createPingFrame()
Create a ping frame.static WebSocketFrame
createPingFrame(byte[] payload)
Create a ping frame.static WebSocketFrame
createPingFrame(java.lang.String payload)
Create a ping frame.static WebSocketFrame
createPongFrame()
Create a pong frame.static WebSocketFrame
createPongFrame(byte[] payload)
Create a pong frame.static WebSocketFrame
createPongFrame(java.lang.String payload)
Create a pong frame.static WebSocketFrame
createTextFrame(java.lang.String payload)
Create a text frame.int
getCloseCode()
Parse the first two bytes of the payload as a close code.java.lang.String
getCloseReason()
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
getOpcode()
Get the opcode.byte[]
getPayload()
Get the unmasked payload.int
getPayloadLength()
Get the payload length.java.lang.String
getPayloadText()
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
hasPayload()
Check if this frame has payload.boolean
isBinaryFrame()
Check if this frame is a binary frame.boolean
isCloseFrame()
Check if this frame is a close frame.boolean
isContinuationFrame()
Check if this frame is a continuation frame.boolean
isControlFrame()
Check if this frame is a control frame.boolean
isDataFrame()
Check if this frame is a data frame.boolean
isPingFrame()
Check if this frame is a ping frame.boolean
isPongFrame()
Check if this frame is a pong frame.boolean
isTextFrame()
Check if this frame is a text frame.(package private) static byte[]
mask(byte[] maskingKey, byte[] payload)
Mask/unmask payload.WebSocketFrame
setCloseFramePayload(int closeCode, java.lang.String reason)
Set the payload that conforms to the payload format of close frames.WebSocketFrame
setFin(boolean fin)
Set the value of FIN bit.(package private) WebSocketFrame
setMask(boolean mask)
Set the value of MASK bit.WebSocketFrame
setOpcode(int opcode)
Set the opcodeWebSocketFrame
setPayload(byte[] payload)
Set the unmasked payload.WebSocketFrame
setPayload(java.lang.String payload)
Set the payload.WebSocketFrame
setRsv1(boolean rsv1)
Set the value of RSV1 bit.WebSocketFrame
setRsv2(boolean rsv2)
Set the value of RSV2 bit.WebSocketFrame
setRsv3(boolean rsv3)
Set the value of RSV3 bit.private static java.util.List<WebSocketFrame>
split(WebSocketFrame frame, int maxPayloadSize)
(package private) static java.util.List<WebSocketFrame>
splitIfNecessary(WebSocketFrame frame, int maxPayloadSize, PerMessageCompressionExtension pmce)
java.lang.String
toString()
-
-
-
Method Detail
-
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:
WebSocketOpcode
-
setOpcode
public WebSocketFrame setOpcode(int opcode)
Set the opcode- Parameters:
opcode
- The opcode.- Returns:
this
object.- See Also:
WebSocketOpcode
-
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 java.lang.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 asnull
.- Returns:
this
object.
-
setPayload
public WebSocketFrame setPayload(java.lang.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 asnull
.- Returns:
this
object.
-
setCloseFramePayload
public WebSocketFrame setCloseFramePayload(int closeCode, java.lang.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 asnull
.- Returns:
this
object.- See Also:
- RFC 6455, 5.5.1. Close,
WebSocketCloseCode
-
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:
- RFC 6455, 5.5.1. Close,
WebSocketCloseCode
-
getCloseReason
public java.lang.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 java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
appendPayloadCommon
private boolean appendPayloadCommon(java.lang.StringBuilder builder)
-
appendPayloadText
private void appendPayloadText(java.lang.StringBuilder builder)
-
appendPayloadClose
private void appendPayloadClose(java.lang.StringBuilder builder)
-
appendPayloadBinary
private void appendPayloadBinary(java.lang.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 isnull
.
-
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(java.lang.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(java.lang.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 isnull
.
-
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:
WebSocketCloseCode
-
createCloseFrame
public static WebSocketFrame createCloseFrame(int closeCode, java.lang.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:
WebSocketCloseCode
-
createPingFrame
public static WebSocketFrame createPingFrame()
Create a ping frame.- Returns:
- A WebSocket frame whose FIN bit is true, opcode is
PING
and payload isnull
.
-
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(java.lang.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 isnull
.
-
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(java.lang.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. 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:
- 5.3. Client-to-Server Masking
-
compressFrame
static WebSocketFrame compressFrame(WebSocketFrame frame, PerMessageCompressionExtension pmce)
-
compress
private static byte[] compress(byte[] data, PerMessageCompressionExtension pmce)
-
splitIfNecessary
static java.util.List<WebSocketFrame> splitIfNecessary(WebSocketFrame frame, int maxPayloadSize, PerMessageCompressionExtension pmce)
-
split
private static java.util.List<WebSocketFrame> split(WebSocketFrame frame, int maxPayloadSize)
-
-