Class UndertowWebSocketSession
java.lang.Object
org.springframework.web.reactive.socket.adapter.AbstractWebSocketSession<T>
org.springframework.web.reactive.socket.adapter.AbstractListenerWebSocketSession<io.undertow.websockets.core.WebSocketChannel>
org.springframework.web.reactive.socket.adapter.UndertowWebSocketSession
- All Implemented Interfaces:
Subscriber<Void>
,WebSocketSession
public class UndertowWebSocketSession
extends AbstractListenerWebSocketSession<io.undertow.websockets.core.WebSocketChannel>
Spring
WebSocketSession
implementation that adapts to an Undertow
WebSocketChannel
.- Since:
- 5.0
- Author:
- Violeta Georgieva, Rossen Stoyanchev
-
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.web.reactive.socket.adapter.AbstractListenerWebSocketSession
AbstractListenerWebSocketSession.WebSocketSendProcessor
-
Field Summary
Fields inherited from class org.springframework.web.reactive.socket.adapter.AbstractWebSocketSession
logger
-
Constructor Summary
ConstructorDescriptionUndertowWebSocketSession
(io.undertow.websockets.core.WebSocketChannel channel, HandshakeInfo info, DataBufferFactory factory) UndertowWebSocketSession
(io.undertow.websockets.core.WebSocketChannel channel, HandshakeInfo info, DataBufferFactory factory, reactor.core.publisher.Sinks.Empty<Void> completionSink) -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
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.boolean
isOpen()
Whether the underlying connection is open.protected void
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
Suspend receiving until received message(s) are processed and more demand is generated by the downstream Subscriber.Methods inherited from class org.springframework.web.reactive.socket.adapter.AbstractListenerWebSocketSession
closeStatus, getSendProcessor, onComplete, onError, onNext, onSubscribe, receive, send
Methods inherited from class org.springframework.web.reactive.socket.adapter.AbstractWebSocketSession
binaryMessage, bufferFactory, getAttributes, getDelegate, getHandshakeInfo, getId, getLogPrefix, pingMessage, pongMessage, textMessage, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.web.reactive.socket.WebSocketSession
close
-
Constructor Details
-
UndertowWebSocketSession
public UndertowWebSocketSession(io.undertow.websockets.core.WebSocketChannel channel, HandshakeInfo info, DataBufferFactory factory) -
UndertowWebSocketSession
public UndertowWebSocketSession(io.undertow.websockets.core.WebSocketChannel channel, HandshakeInfo info, DataBufferFactory factory, @Nullable reactor.core.publisher.Sinks.Empty<Void> completionSink)
-
-
Method Details
-
canSuspendReceiving
protected boolean canSuspendReceiving()Description copied from class:AbstractListenerWebSocketSession
Whether the underlying WebSocket API has flow control and can suspend and resume the receiving of messages.Note: Sub-classes are encouraged to start out in suspended mode, if possible, and wait until demand is received.
- Specified by:
canSuspendReceiving
in classAbstractListenerWebSocketSession<io.undertow.websockets.core.WebSocketChannel>
-
suspendReceiving
protected void suspendReceiving()Description copied from class:AbstractListenerWebSocketSession
Suspend receiving until received message(s) are processed and more demand is generated by the downstream Subscriber.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 returnfalse
.- Specified by:
suspendReceiving
in classAbstractListenerWebSocketSession<io.undertow.websockets.core.WebSocketChannel>
-
resumeReceiving
protected void resumeReceiving()Description copied from class:AbstractListenerWebSocketSession
Resume receiving new message(s) after demand is generated by the downstream Subscriber.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 returnfalse
.- Specified by:
resumeReceiving
in classAbstractListenerWebSocketSession<io.undertow.websockets.core.WebSocketChannel>
-
sendMessage
Description copied from class:AbstractListenerWebSocketSession
Send the given WebSocket message.Note: Sub-classes are responsible for releasing the payload data buffer, once fully written, if pooled buffers apply to the underlying container.
- Specified by:
sendMessage
in classAbstractListenerWebSocketSession<io.undertow.websockets.core.WebSocketChannel>
- Throws:
IOException
-
isOpen
public boolean isOpen()Description copied from interface:WebSocketSession
Whether the underlying connection is open. -
close
Description copied from interface:WebSocketSession
Close the WebSocket session with the given status.- Parameters:
status
- the close status
-