Class WebSocketClientHandshaker
java.lang.Object
io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker
- Direct Known Subclasses:
WebSocketClientHandshaker00
,WebSocketClientHandshaker07
,WebSocketClientHandshaker08
,WebSocketClientHandshaker13
Base class for web socket client handshake implementations
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final boolean
private String
protected final HttpHeaders
protected static final int
private final String
private static final AtomicIntegerFieldUpdater
<WebSocketClientHandshaker> private boolean
private int
private long
protected final boolean
private boolean
private static final String
private static final String
private final int
private final URI
private final WebSocketVersion
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
WebSocketClientHandshaker
(URI uri, WebSocketVersion version, String subprotocol, HttpHeaders customHeaders, int maxFramePayloadLength) Base constructorprotected
WebSocketClientHandshaker
(URI uri, WebSocketVersion version, String subprotocol, HttpHeaders customHeaders, int maxFramePayloadLength, long forceCloseTimeoutMillis) Base constructorprotected
WebSocketClientHandshaker
(URI uri, WebSocketVersion version, String subprotocol, HttpHeaders customHeaders, int maxFramePayloadLength, long forceCloseTimeoutMillis, boolean absoluteUpgradeUrl) Base constructorprotected
WebSocketClientHandshaker
(URI uri, WebSocketVersion version, String subprotocol, HttpHeaders customHeaders, int maxFramePayloadLength, long forceCloseTimeoutMillis, boolean absoluteUpgradeUrl, boolean generateOriginHeader) Base constructor -
Method Summary
Modifier and TypeMethodDescriptionReturns the subprotocol response sent by the server.close
(ChannelHandlerContext ctx, CloseWebSocketFrame frame) Performs the closing handshakeclose
(ChannelHandlerContext ctx, CloseWebSocketFrame frame, ChannelPromise promise) Performs the closing handshakeclose
(Channel channel, CloseWebSocketFrame frame) Performs the closing handshake.close
(Channel channel, CloseWebSocketFrame frame, ChannelPromise promise) Performs the closing handshake When called from within aChannelHandler
you most likely want to useclose(ChannelHandlerContext, CloseWebSocketFrame, ChannelPromise)
.private ChannelFuture
close0
(ChannelOutboundInvoker invoker, Channel channel, CloseWebSocketFrame frame, ChannelPromise promise) Returns the CSV of requested subprotocol(s) sent to the server as specified in the constructorfinal void
finishHandshake
(Channel channel, FullHttpResponse response) Validates and finishes the opening handshake initiated byhandshake(io.netty.channel.Channel)
}.long
Begins the opening handshakefinal ChannelFuture
handshake
(Channel channel, ChannelPromise promise) Begins the opening handshakeprotected boolean
Flag to indicate if the closing handshake was initiated because of timeout.boolean
Flag to indicate if the opening handshake is completeint
Returns the max length for any frame's payloadprotected abstract FullHttpRequest
Returns a newinvalid @link
{@link FullHttpRequest) which will be used for the handshake.
protected abstract WebSocketFrameDecoder
Returns the decoder to use after handshake is complete.protected abstract WebSocketFrameEncoder
Returns the encoder to use after the handshake is complete.final ChannelFuture
processHandshake
(Channel channel, HttpResponse response) Process the opening handshake initiated byhandshake(io.netty.channel.Channel)
}.final ChannelFuture
processHandshake
(Channel channel, HttpResponse response, ChannelPromise promise) Process the opening handshake initiated byhandshake(io.netty.channel.Channel)
}.private void
setActualSubprotocol
(String actualSubprotocol) setForceCloseTimeoutMillis
(long forceCloseTimeoutMillis) Sets timeout to close the connection if it was not closed by the server.private void
protected String
upgradeUrl
(URI wsURL) Return the constructed raw path for the giveURI
.uri()
Returns the URI to the web socket.protected abstract void
verify
(FullHttpResponse response) Verify theFullHttpResponse
and throws aWebSocketHandshakeException
if something is wrong.version()
Version of the web socket specification that is being used(package private) static CharSequence
websocketHostValue
(URI wsURL) (package private) static CharSequence
websocketOriginValue
(URI wsURL)
-
Field Details
-
HTTP_SCHEME_PREFIX
-
HTTPS_SCHEME_PREFIX
-
DEFAULT_FORCE_CLOSE_TIMEOUT_MILLIS
protected static final int DEFAULT_FORCE_CLOSE_TIMEOUT_MILLIS- See Also:
-
uri
-
version
-
handshakeComplete
private volatile boolean handshakeComplete -
forceCloseTimeoutMillis
private volatile long forceCloseTimeoutMillis -
forceCloseInit
private volatile int forceCloseInit -
FORCE_CLOSE_INIT_UPDATER
-
forceCloseComplete
private volatile boolean forceCloseComplete -
expectedSubprotocol
-
actualSubprotocol
-
customHeaders
-
maxFramePayloadLength
private final int maxFramePayloadLength -
absoluteUpgradeUrl
private final boolean absoluteUpgradeUrl -
generateOriginHeader
protected final boolean generateOriginHeader
-
-
Constructor Details
-
WebSocketClientHandshaker
protected WebSocketClientHandshaker(URI uri, WebSocketVersion version, String subprotocol, HttpHeaders customHeaders, int maxFramePayloadLength) Base constructor- Parameters:
uri
- URL for web socket communications. e.g "ws://myhost.com/mypath". Subsequent web socket frames will be sent to this URL.version
- Version of web socket specification to use to connect to the serversubprotocol
- Sub protocol request sent to the server.customHeaders
- Map of custom headers to add to the client requestmaxFramePayloadLength
- Maximum length of a frame's payload
-
WebSocketClientHandshaker
protected WebSocketClientHandshaker(URI uri, WebSocketVersion version, String subprotocol, HttpHeaders customHeaders, int maxFramePayloadLength, long forceCloseTimeoutMillis) Base constructor- Parameters:
uri
- URL for web socket communications. e.g "ws://myhost.com/mypath". Subsequent web socket frames will be sent to this URL.version
- Version of web socket specification to use to connect to the serversubprotocol
- Sub protocol request sent to the server.customHeaders
- Map of custom headers to add to the client requestmaxFramePayloadLength
- Maximum length of a frame's payloadforceCloseTimeoutMillis
- Close the connection if it was not closed by the server after timeout specified
-
WebSocketClientHandshaker
protected WebSocketClientHandshaker(URI uri, WebSocketVersion version, String subprotocol, HttpHeaders customHeaders, int maxFramePayloadLength, long forceCloseTimeoutMillis, boolean absoluteUpgradeUrl) Base constructor- Parameters:
uri
- URL for web socket communications. e.g "ws://myhost.com/mypath". Subsequent web socket frames will be sent to this URL.version
- Version of web socket specification to use to connect to the serversubprotocol
- Sub protocol request sent to the server.customHeaders
- Map of custom headers to add to the client requestmaxFramePayloadLength
- Maximum length of a frame's payloadforceCloseTimeoutMillis
- Close the connection if it was not closed by the server after timeout specifiedabsoluteUpgradeUrl
- Use an absolute url for the Upgrade request, typically when connecting through an HTTP proxy over clear HTTP
-
WebSocketClientHandshaker
protected WebSocketClientHandshaker(URI uri, WebSocketVersion version, String subprotocol, HttpHeaders customHeaders, int maxFramePayloadLength, long forceCloseTimeoutMillis, boolean absoluteUpgradeUrl, boolean generateOriginHeader) Base constructor- Parameters:
uri
- URL for web socket communications. e.g "ws://myhost.com/mypath". Subsequent web socket frames will be sent to this URL.version
- Version of web socket specification to use to connect to the serversubprotocol
- Sub protocol request sent to the server.customHeaders
- Map of custom headers to add to the client requestmaxFramePayloadLength
- Maximum length of a frame's payloadforceCloseTimeoutMillis
- Close the connection if it was not closed by the server after timeout specifiedabsoluteUpgradeUrl
- Use an absolute url for the Upgrade request, typically when connecting through an HTTP proxy over clear HTTPgenerateOriginHeader
- Allows to generate the `Origin`|`Sec-WebSocket-Origin` header value for handshake request according to the given webSocketURL
-
-
Method Details
-
uri
Returns the URI to the web socket. e.g. "ws://myhost.com/path" -
version
Version of the web socket specification that is being used -
maxFramePayloadLength
public int maxFramePayloadLength()Returns the max length for any frame's payload -
isHandshakeComplete
public boolean isHandshakeComplete()Flag to indicate if the opening handshake is complete -
setHandshakeComplete
private void setHandshakeComplete() -
expectedSubprotocol
Returns the CSV of requested subprotocol(s) sent to the server as specified in the constructor -
actualSubprotocol
Returns the subprotocol response sent by the server. Only available after end of handshake. Null if no subprotocol was requested or confirmed by the server. -
setActualSubprotocol
-
forceCloseTimeoutMillis
public long forceCloseTimeoutMillis() -
isForceCloseComplete
protected boolean isForceCloseComplete()Flag to indicate if the closing handshake was initiated because of timeout. For testing only. -
setForceCloseTimeoutMillis
Sets timeout to close the connection if it was not closed by the server.- Parameters:
forceCloseTimeoutMillis
- Close the connection if it was not closed by the server after timeout specified
-
handshake
Begins the opening handshake- Parameters:
channel
- Channel
-
handshake
Begins the opening handshake- Parameters:
channel
- Channelpromise
- theChannelPromise
to be notified when the opening handshake is sent
-
newHandshakeRequest
Returns a newinvalid @link
{@link FullHttpRequest) which will be used for the handshake.
-
finishHandshake
Validates and finishes the opening handshake initiated byhandshake(io.netty.channel.Channel)
}.- Parameters:
channel
- Channelresponse
- HTTP response containing the closing handshake details
-
processHandshake
Process the opening handshake initiated byhandshake(io.netty.channel.Channel)
}.- Parameters:
channel
- Channelresponse
- HTTP response containing the closing handshake details- Returns:
- future
the
ChannelFuture
which is notified once the handshake completes.
-
processHandshake
public final ChannelFuture processHandshake(Channel channel, HttpResponse response, ChannelPromise promise) Process the opening handshake initiated byhandshake(io.netty.channel.Channel)
}.- Parameters:
channel
- Channelresponse
- HTTP response containing the closing handshake detailspromise
- theChannelPromise
to notify once the handshake completes.- Returns:
- future
the
ChannelFuture
which is notified once the handshake completes.
-
verify
Verify theFullHttpResponse
and throws aWebSocketHandshakeException
if something is wrong. -
newWebsocketDecoder
Returns the decoder to use after handshake is complete. -
newWebSocketEncoder
Returns the encoder to use after the handshake is complete. -
close
Performs the closing handshake. When called from within aChannelHandler
you most likely want to useclose(ChannelHandlerContext, CloseWebSocketFrame)
.- Parameters:
channel
- Channelframe
- Closing Frame that was received
-
close
Performs the closing handshake When called from within aChannelHandler
you most likely want to useclose(ChannelHandlerContext, CloseWebSocketFrame, ChannelPromise)
.- Parameters:
channel
- Channelframe
- Closing Frame that was receivedpromise
- theChannelPromise
to be notified when the closing handshake is done
-
close
Performs the closing handshake- Parameters:
ctx
- theChannelHandlerContext
to use.frame
- Closing Frame that was received
-
close
public ChannelFuture close(ChannelHandlerContext ctx, CloseWebSocketFrame frame, ChannelPromise promise) Performs the closing handshake- Parameters:
ctx
- theChannelHandlerContext
to use.frame
- Closing Frame that was receivedpromise
- theChannelPromise
to be notified when the closing handshake is done
-
close0
private ChannelFuture close0(ChannelOutboundInvoker invoker, Channel channel, CloseWebSocketFrame frame, ChannelPromise promise) -
upgradeUrl
Return the constructed raw path for the giveURI
. -
websocketHostValue
-
websocketOriginValue
-