public abstract class AbstractWebSocketSession<T> extends Object implements NativeWebSocketSession
WebSocketSession
.Modifier and Type | Field and Description |
---|---|
protected static IdGenerator |
idGenerator |
protected static Log |
logger |
Constructor and Description |
---|
AbstractWebSocketSession(Map<String,Object> attributes)
Create a new instance and associate the given attributes with it.
|
Modifier and Type | Method and Description |
---|---|
protected void |
checkNativeSessionInitialized() |
void |
close()
Close the WebSocket connection with status 1000, i.e.
|
void |
close(CloseStatus status)
Close the WebSocket connection with the given close status.
|
protected abstract void |
closeInternal(CloseStatus status) |
Map<String,Object> |
getAttributes()
Return the map with attributes associated with the WebSocket session.
|
T |
getNativeSession()
Return the underlying native WebSocketSession.
|
<R> R |
getNativeSession(Class<R> requiredType)
Return the underlying native WebSocketSession, if available.
|
void |
initializeNativeSession(T session) |
protected abstract void |
sendBinaryMessage(BinaryMessage message) |
void |
sendMessage(WebSocketMessage<?> message)
Send a WebSocket message: either
TextMessage or BinaryMessage . |
protected abstract void |
sendPingMessage(PingMessage message) |
protected abstract void |
sendPongMessage(PongMessage message) |
protected abstract void |
sendTextMessage(TextMessage message) |
String |
toString() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getAcceptedProtocol, getBinaryMessageSizeLimit, getExtensions, getHandshakeHeaders, getId, getLocalAddress, getPrincipal, getRemoteAddress, getTextMessageSizeLimit, getUri, isOpen, setBinaryMessageSizeLimit, setTextMessageSizeLimit
protected static final IdGenerator idGenerator
protected static final Log logger
public AbstractWebSocketSession(@Nullable Map<String,Object> attributes)
attributes
- attributes from the HTTP handshake to associate with the WebSocket
session; the provided attributes are copied, the original map is not used.public Map<String,Object> getAttributes()
WebSocketSession
On the server side the map can be populated initially through a
HandshakeInterceptor
. On the client side the map can be populated via
WebSocketClient
handshake methods.
getAttributes
in interface WebSocketSession
null
)public T getNativeSession()
NativeWebSocketSession
getNativeSession
in interface NativeWebSocketSession
@Nullable public <R> R getNativeSession(@Nullable Class<R> requiredType)
NativeWebSocketSession
getNativeSession
in interface NativeWebSocketSession
requiredType
- the required type of the sessionnull
if not availablepublic void initializeNativeSession(T session)
protected final void checkNativeSessionInitialized()
public final void sendMessage(WebSocketMessage<?> message) throws IOException
WebSocketSession
TextMessage
or BinaryMessage
.
Note: The underlying standard WebSocket session (JSR-356) does
not allow concurrent sending. Therefore sending must be synchronized. To ensure
that, one option is to wrap the WebSocketSession
with the
ConcurrentWebSocketSessionDecorator
.
sendMessage
in interface WebSocketSession
IOException
ConcurrentWebSocketSessionDecorator
protected abstract void sendTextMessage(TextMessage message) throws IOException
IOException
protected abstract void sendBinaryMessage(BinaryMessage message) throws IOException
IOException
protected abstract void sendPingMessage(PingMessage message) throws IOException
IOException
protected abstract void sendPongMessage(PongMessage message) throws IOException
IOException
public final void close() throws IOException
WebSocketSession
session.close(CloseStatus.NORMAL);
close
in interface Closeable
close
in interface AutoCloseable
close
in interface WebSocketSession
IOException
public final void close(CloseStatus status) throws IOException
WebSocketSession
close
in interface WebSocketSession
IOException
protected abstract void closeInternal(CloseStatus status) throws IOException
IOException