public class UndertowWebSocketSession extends AbstractListenerWebSocketSession<io.undertow.websockets.core.WebSocketChannel>
WebSocketSession
implementation that adapts to an Undertow
WebSocketChannel
.AbstractListenerWebSocketSession.WebSocketSendProcessor
Constructor and Description |
---|
UndertowWebSocketSession(io.undertow.websockets.core.WebSocketChannel channel,
HandshakeInfo info,
DataBufferFactory factory) |
UndertowWebSocketSession(io.undertow.websockets.core.WebSocketChannel channel,
HandshakeInfo info,
DataBufferFactory factory,
reactor.core.publisher.MonoProcessor<Void> completionMono) |
Modifier and Type | Method and Description |
---|---|
protected boolean |
canSuspendReceiving()
Whether the underlying WebSocket API has flow control and can suspend and
resume the receiving of messages.
|
reactor.core.publisher.Mono<Void> |
close(CloseStatus status)
Close the WebSocket session with the given status.
|
protected void |
resumeReceiving()
Resume receiving new message(s) after demand is generated by the
downstream Subscriber.
|
protected boolean |
sendMessage(WebSocketMessage message)
Send the given WebSocket message.
|
protected void |
suspendReceiving()
Suspend receiving until received message(s) are processed and more demand
is generated by the downstream Subscriber.
|
getSendProcessor, onComplete, onError, onNext, onSubscribe, receive, send
binaryMessage, bufferFactory, getDelegate, getHandshakeInfo, getId, pingMessage, pongMessage, textMessage, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
close
public UndertowWebSocketSession(io.undertow.websockets.core.WebSocketChannel channel, HandshakeInfo info, DataBufferFactory factory)
public UndertowWebSocketSession(io.undertow.websockets.core.WebSocketChannel channel, HandshakeInfo info, DataBufferFactory factory, @Nullable reactor.core.publisher.MonoProcessor<Void> completionMono)
protected boolean canSuspendReceiving()
AbstractListenerWebSocketSession
Note: Sub-classes are encouraged to start out in suspended mode, if possible, and wait until demand is received.
canSuspendReceiving
in class AbstractListenerWebSocketSession<io.undertow.websockets.core.WebSocketChannel>
protected void suspendReceiving()
AbstractListenerWebSocketSession
Note: if the underlying WebSocket API does not provide
flow control for receiving messages, this method should be a no-op
and AbstractListenerWebSocketSession.canSuspendReceiving()
should return false
.
suspendReceiving
in class AbstractListenerWebSocketSession<io.undertow.websockets.core.WebSocketChannel>
protected void resumeReceiving()
AbstractListenerWebSocketSession
Note: if the underlying WebSocket API does not provide
flow control for receiving messages, this method should be a no-op
and AbstractListenerWebSocketSession.canSuspendReceiving()
should return false
.
resumeReceiving
in class AbstractListenerWebSocketSession<io.undertow.websockets.core.WebSocketChannel>
protected boolean sendMessage(WebSocketMessage message) throws IOException
AbstractListenerWebSocketSession
Note: Sub-classes are responsible for releasing the payload data buffer, once fully written, if pooled buffers apply to the underlying container.
sendMessage
in class AbstractListenerWebSocketSession<io.undertow.websockets.core.WebSocketChannel>
IOException
public reactor.core.publisher.Mono<Void> close(CloseStatus status)
WebSocketSession
status
- the close status