Class Handshake
- java.lang.Object
-
- io.undertow.websockets.core.protocol.Handshake
-
- Direct Known Subclasses:
Hybi07Handshake
public abstract class Handshake extends Object
Abstract base class for doing a WebSocket Handshake.- Author:
- Mike Brock
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanallowExtensionsprotected Set<ExtensionHandshake>availableExtensionsprotected Set<String>subprotocols
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddExtension(ExtensionHandshake extension)Add a new WebSocket Extension handshake to the list of available extensions.abstract WebSocketChannelcreateChannel(WebSocketHttpExchange exchange, org.xnio.StreamConnection channel, ByteBufferPool pool)Create theWebSocketChannelfrom theWebSocketHttpExchangeStringgetHashAlgorithm()Return the algorithm that is used to hash during the handshakeStringgetMagicNumber()Return the magic number which will be mixed inWebSocketVersiongetVersion()Return the version for which theHandshakecan be used.protected static StringgetWebSocketLocation(WebSocketHttpExchange exchange)Return the full url of the websocket location of the givenWebSocketHttpExchangevoidhandshake(WebSocketHttpExchange exchange)Issue the WebSocket upgradeprotected abstract voidhandshakeInternal(WebSocketHttpExchange exchange)protected List<ExtensionFunction>initExtensions(WebSocketHttpExchange exchange)Create theExtensionFunctionlist associated with the negotiated extensions defined in the exchange's response.abstract booleanmatches(WebSocketHttpExchange exchange)Returntrueif this implementation can be used to issue a handshake.protected voidperformUpgrade(WebSocketHttpExchange exchange)Perform the upgrade using no payloadprotected voidperformUpgrade(WebSocketHttpExchange exchange, byte[] data)convenience method to perform the upgradeprotected List<WebSocketExtension>selectedExtension(List<WebSocketExtension> extensionList)protected voidselectExtensions(WebSocketHttpExchange exchange)protected voidselectSubprotocol(WebSocketHttpExchange exchange)Selects the first matching supported sub protocol and add it the the headers of the exchange.protected StringsupportedSubprotols(String[] requestedSubprotocolArray)protected voidupgradeChannel(WebSocketHttpExchange exchange, byte[] data)
-
-
-
Field Detail
-
availableExtensions
protected Set<ExtensionHandshake> availableExtensions
-
allowExtensions
protected boolean allowExtensions
-
-
Constructor Detail
-
Handshake
protected Handshake(WebSocketVersion version, String hashAlgorithm, String magicNumber, Set<String> subprotocols)
-
-
Method Detail
-
getVersion
public WebSocketVersion getVersion()
Return the version for which theHandshakecan be used.
-
getHashAlgorithm
public String getHashAlgorithm()
Return the algorithm that is used to hash during the handshake
-
getMagicNumber
public String getMagicNumber()
Return the magic number which will be mixed in
-
getWebSocketLocation
protected static String getWebSocketLocation(WebSocketHttpExchange exchange)
Return the full url of the websocket location of the givenWebSocketHttpExchange
-
handshake
public final void handshake(WebSocketHttpExchange exchange)
Issue the WebSocket upgrade- Parameters:
exchange- TheWebSocketHttpExchangefor which the handshake and upgrade should occur.
-
handshakeInternal
protected abstract void handshakeInternal(WebSocketHttpExchange exchange)
-
matches
public abstract boolean matches(WebSocketHttpExchange exchange)
Returntrueif this implementation can be used to issue a handshake.
-
createChannel
public abstract WebSocketChannel createChannel(WebSocketHttpExchange exchange, org.xnio.StreamConnection channel, ByteBufferPool pool)
Create theWebSocketChannelfrom theWebSocketHttpExchange
-
performUpgrade
protected final void performUpgrade(WebSocketHttpExchange exchange, byte[] data)
convenience method to perform the upgrade
-
upgradeChannel
protected void upgradeChannel(WebSocketHttpExchange exchange, byte[] data)
-
performUpgrade
protected final void performUpgrade(WebSocketHttpExchange exchange)
Perform the upgrade using no payload
-
selectSubprotocol
protected final void selectSubprotocol(WebSocketHttpExchange exchange)
Selects the first matching supported sub protocol and add it the the headers of the exchange.
-
selectExtensions
protected final void selectExtensions(WebSocketHttpExchange exchange)
-
selectedExtension
protected List<WebSocketExtension> selectedExtension(List<WebSocketExtension> extensionList)
-
addExtension
public final void addExtension(ExtensionHandshake extension)
Add a new WebSocket Extension handshake to the list of available extensions.- Parameters:
extension- a newExtensionHandshake
-
initExtensions
protected final List<ExtensionFunction> initExtensions(WebSocketHttpExchange exchange)
Create theExtensionFunctionlist associated with the negotiated extensions defined in the exchange's response.- Parameters:
exchange- the exchange used to retrieve negotiated extensions- Returns:
- a list of
ExtensionFunctionwith the implementation of the extensions
-
-