Module io.netty5.codec.http
Class WebSocketClientHandshaker
- java.lang.Object
-
- io.netty5.handler.codec.http.websocketx.WebSocketClientHandshaker
-
- Direct Known Subclasses:
WebSocketClientHandshaker13
public abstract class WebSocketClientHandshaker extends Object
Base class for web socket client handshake implementations
-
-
Field Summary
Fields Modifier and Type Field Description protected HttpHeaders
customHeaders
protected static int
DEFAULT_FORCE_CLOSE_TIMEOUT_MILLIS
-
Constructor Summary
Constructors Modifier Constructor Description protected
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 constructor
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description String
actualSubprotocol()
Returns the subprotocol response sent by the server.Future<Void>
close(ChannelHandlerContext ctx, CloseWebSocketFrame frame)
Performs the closing handshakeFuture<Void>
close(Channel channel, CloseWebSocketFrame frame)
Performs the closing handshake.String
expectedSubprotocol()
Returns the CSV of requested subprotocol(s) sent to the server as specified in the constructorvoid
finishHandshake(Channel channel, FullHttpResponse response)
Validates and finishes the opening handshake initiated byhandshake(io.netty5.channel.Channel)
}.long
forceCloseTimeoutMillis()
Future<Void>
handshake(Channel channel)
Begins the opening handshakeprotected boolean
isForceCloseComplete()
Flag to indicate if the closing handshake was initiated because of timeout.boolean
isHandshakeComplete()
Flag to indicate if the opening handshake is completeint
maxFramePayloadLength()
Returns the max length for any frame's payloadprotected abstract FullHttpRequest
newHandshakeRequest(BufferAllocator allocator)
Returns a new {@link FullHttpRequest) which will be used for the handshake.protected abstract WebSocketFrameDecoder
newWebsocketDecoder()
Returns the decoder to use after handshake is complete.protected abstract WebSocketFrameEncoder
newWebSocketEncoder()
Returns the encoder to use after the handshake is complete.Future<Void>
processHandshake(Channel channel, HttpResponse response)
Process the opening handshake initiated byhandshake(io.netty5.channel.Channel)
}.WebSocketClientHandshaker
setForceCloseTimeoutMillis(long forceCloseTimeoutMillis)
Sets timeout to close the connection if it was not closed by the server.protected String
upgradeUrl(URI wsURL)
Return the constructed raw path for the giveURI
.URI
uri()
Returns the URI to the web socket. e.g.protected abstract void
verify(FullHttpResponse response)
Verify theFullHttpResponse
and throws aWebSocketHandshakeException
if something is wrong.WebSocketVersion
version()
Version of the web socket specification that is being used
-
-
-
Field Detail
-
DEFAULT_FORCE_CLOSE_TIMEOUT_MILLIS
protected static final int DEFAULT_FORCE_CLOSE_TIMEOUT_MILLIS
- See Also:
- Constant Field Values
-
customHeaders
protected final HttpHeaders customHeaders
-
-
Constructor Detail
-
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
-
-
Method Detail
-
uri
public URI uri()
Returns the URI to the web socket. e.g. "ws://myhost.com/path"
-
version
public WebSocketVersion 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
-
expectedSubprotocol
public String expectedSubprotocol()
Returns the CSV of requested subprotocol(s) sent to the server as specified in the constructor
-
actualSubprotocol
public String 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.
-
forceCloseTimeoutMillis
public long forceCloseTimeoutMillis()
-
isForceCloseComplete
protected boolean isForceCloseComplete()
Flag to indicate if the closing handshake was initiated because of timeout. For testing only.
-
setForceCloseTimeoutMillis
public WebSocketClientHandshaker setForceCloseTimeoutMillis(long forceCloseTimeoutMillis)
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
public Future<Void> handshake(Channel channel)
Begins the opening handshake- Parameters:
channel
- Channel
-
newHandshakeRequest
protected abstract FullHttpRequest newHandshakeRequest(BufferAllocator allocator)
Returns a new {@link FullHttpRequest) which will be used for the handshake.
-
finishHandshake
public final void finishHandshake(Channel channel, FullHttpResponse response)
Validates and finishes the opening handshake initiated byhandshake(io.netty5.channel.Channel)
}.- Parameters:
channel
- Channelresponse
- HTTP response containing the closing handshake details
-
processHandshake
public final Future<Void> processHandshake(Channel channel, HttpResponse response)
Process the opening handshake initiated byhandshake(io.netty5.channel.Channel)
}.- Parameters:
channel
- Channelresponse
- HTTP response containing the closing handshake details- Returns:
- future
the
Future
which is notified once the handshake completes.
-
verify
protected abstract void verify(FullHttpResponse response)
Verify theFullHttpResponse
and throws aWebSocketHandshakeException
if something is wrong.
-
newWebsocketDecoder
protected abstract WebSocketFrameDecoder newWebsocketDecoder()
Returns the decoder to use after handshake is complete.
-
newWebSocketEncoder
protected abstract WebSocketFrameEncoder newWebSocketEncoder()
Returns the encoder to use after the handshake is complete.
-
close
public Future<Void> close(Channel channel, CloseWebSocketFrame frame)
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
public Future<Void> close(ChannelHandlerContext ctx, CloseWebSocketFrame frame)
Performs the closing handshake- Parameters:
ctx
- theChannelHandlerContext
to use.frame
- Closing Frame that was received
-
-