public class WebSocketFilter extends BaseFilter
Filter implementation, which supposed to be placed into a FilterChain right after HTTP
Filter: HttpServerFilter, HttpClientFilter; depending whether it's server or client side. The
WebSocketFilter handles websocket connection, handshake phases and, when receives a websocket frame -
redirects it to appropriate connection (WebSocketApplication, WebSocket) for processing.| Constructor and Description |
|---|
WebSocketFilter()
Constructs a new
WebSocketFilter with a default idle connection
timeout of 15 minutes; |
WebSocketFilter(long wsTimeoutInSeconds)
Constructs a new
WebSocketFilter with a default idle connection
timeout of 15 minutes; |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
doServerUpgrade(FilterChainContext ctx,
HttpContent requestContent) |
NextAction |
handleClose(FilterChainContext ctx)
Method handles Grizzly
Connection close phase. |
NextAction |
handleConnect(FilterChainContext ctx)
Method handles Grizzly
Connection connect phase. |
NextAction |
handleRead(FilterChainContext ctx)
Handle Grizzly
Connection read phase. |
NextAction |
handleWrite(FilterChainContext ctx)
Handle Grizzly
Connection write phase. |
createContext, exceptionOccurred, getFilterChain, getIndex, handleAccept, handleEvent, onAdded, onFilterChainChanged, onRemovedpublic WebSocketFilter()
WebSocketFilter with a default idle connection
timeout of 15 minutes;public WebSocketFilter(long wsTimeoutInSeconds)
WebSocketFilter with a default idle connection
timeout of 15 minutes;public NextAction handleConnect(FilterChainContext ctx) throws IOException
Connection connect phase. Check if the Connection is a client-side WebSocket, if yes - creates websocket handshake packet and send it to a server. Otherwise, if it's not websocket
connection - pass processing to the next Filter in a chain.handleConnect in interface FilterhandleConnect in class BaseFilterctx - FilterChainContextNextAction instruction for FilterChain, how it should continue the execution{@link - IOException}IOExceptionpublic NextAction handleClose(FilterChainContext ctx) throws IOException
Connection close phase. Check if the Connection is a WebSocket, if
yes - tries to close the websocket gracefully (sending close frame) and calls WebSocket.onClose(DataFrame). If the Grizzly Connection is not websocket - passes processing to the next
filter in the chain.handleClose in interface FilterhandleClose in class BaseFilterctx - FilterChainContextNextAction instruction for FilterChain, how it should continue the execution{@link - IOException}IOExceptionpublic NextAction handleRead(FilterChainContext ctx) throws IOException
Connection read phase. If the Connection has associated WebSocket object
(websocket connection), we check if websocket handshake has been completed for this connection, if not -
initiate/validate handshake. If handshake has been completed - parse websocket DataFrames one by one and
pass processing to appropriate WebSocket: WebSocketApplication for server- and client- side
connections.handleRead in interface FilterhandleRead in class BaseFilterctx - FilterChainContextNextAction instruction for FilterChain, how it should continue the execution{@link - IOException}IOExceptionpublic NextAction handleWrite(FilterChainContext ctx) throws IOException
Connection write phase. If the Connection has associated WebSocket object
(websocket connection), we assume that message is websocket DataFrame and serialize it into a Buffer.handleWrite in interface FilterhandleWrite in class BaseFilterctx - FilterChainContextNextAction instruction for FilterChain, how it should continue the execution{@link - IOException}IOExceptionprotected boolean doServerUpgrade(FilterChainContext ctx, HttpContent requestContent) throws IOException
IOExceptionCopyright © 2013 Oracle Corporation. All Rights Reserved.