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