public abstract class BaseWebSocketFilter 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
BaseWebSocketFilter handles websocket connection, handshake phases and, when receives a websocket frame -
redirects it to appropriate connection (WebSocketApplication
, WebSocket
) for processing.Constructor and Description |
---|
BaseWebSocketFilter()
Constructs a new
BaseWebSocketFilter with a default idle connection
timeout of 15 minutes; |
BaseWebSocketFilter(long wsTimeoutInSeconds)
Constructs a new
BaseWebSocketFilter with a default idle connection
timeout of 15 minutes; |
Modifier and Type | Method and Description |
---|---|
protected static HttpResponsePacket |
composeHandshakeError(HttpRequestPacket request,
HandshakeException e) |
NextAction |
handleClose(FilterChainContext ctx)
Method handles Grizzly
Connection close phase. |
NextAction |
handleConnect(FilterChainContext ctx)
Method handles Grizzly
Connection connect phase. |
protected abstract NextAction |
handleHandshake(FilterChainContext ctx,
HttpContent content)
Handle websocket handshake
|
NextAction |
handleRead(FilterChainContext ctx)
Handle Grizzly
Connection read phase. |
NextAction |
handleWrite(FilterChainContext ctx)
Handle Grizzly
Connection write phase. |
protected void |
setIdleTimeout(FilterChainContext ctx) |
createContext, exceptionOccurred, handleAccept, handleEvent, onAdded, onFilterChainChanged, onRemoved
public BaseWebSocketFilter()
BaseWebSocketFilter
with a default idle connection
timeout of 15 minutes;public BaseWebSocketFilter(long wsTimeoutInSeconds)
BaseWebSocketFilter
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 Filter
handleConnect
in class BaseFilter
ctx
- FilterChainContext
NextAction
instruction for FilterChain
, how it should continue the execution{@link
- IOException}IOException
public 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 Filter
handleClose
in class BaseFilter
ctx
- FilterChainContext
NextAction
instruction for FilterChain
, how it should continue the execution{@link
- IOException}IOException
public 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 DataFrame
s one by one and
pass processing to appropriate WebSocket
: WebSocketApplication
for server- and client- side
connections.handleRead
in interface Filter
handleRead
in class BaseFilter
ctx
- FilterChainContext
NextAction
instruction for FilterChain
, how it should continue the execution{@link
- IOException}IOException
public 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 Filter
handleWrite
in class BaseFilter
ctx
- FilterChainContext
NextAction
instruction for FilterChain
, how it should continue the execution{@link
- IOException}IOException
protected abstract NextAction handleHandshake(FilterChainContext ctx, HttpContent content) throws IOException
ctx
- FilterChainContext
content
- HTTP messageNextAction
instruction for FilterChain
, how it should continue the execution{@link
- IOException}IOException
protected static HttpResponsePacket composeHandshakeError(HttpRequestPacket request, HandshakeException e)
protected void setIdleTimeout(FilterChainContext ctx)
Copyright © 2014 Oracle Corporation. All rights reserved.