Class AbstractWebSocketSession<T>
- java.lang.Object
- org.springframework.web.socket.adapter.AbstractWebSocketSession<T>
- All Implemented Interfaces:
Closeable,AutoCloseable,NativeWebSocketSession,WebSocketSession
- Direct Known Subclasses:
JettyWebSocketSession,StandardWebSocketSession
public abstract class AbstractWebSocketSession<T> extends Object implements NativeWebSocketSession
An abstract base class for implementations ofWebSocketSession.- Since:
- 4.0
- Author:
- Rossen Stoyanchev
Constructor Summary
Constructors Constructor Description AbstractWebSocketSession(Map<String,Object> attributes)Create a new instance and associate the given attributes with it.
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidcheckNativeSessionInitialized()voidclose()Close the WebSocket connection with status 1000, i.e.voidclose(CloseStatus status)Close the WebSocket connection with the given close status.protected abstract voidcloseInternal(CloseStatus status)Map<String,Object>getAttributes()Return the map with attributes associated with the WebSocket session.TgetNativeSession()Return the underlying native WebSocketSession.<R> RgetNativeSession(Class<R> requiredType)Return the underlying native WebSocketSession, if available.voidinitializeNativeSession(T session)protected abstract voidsendBinaryMessage(BinaryMessage message)voidsendMessage(WebSocketMessage<?> message)Send a WebSocket message: eitherTextMessageorBinaryMessage.protected abstract voidsendPingMessage(PingMessage message)protected abstract voidsendPongMessage(PongMessage message)protected abstract voidsendTextMessage(TextMessage message)StringtoString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.web.socket.WebSocketSession
getAcceptedProtocol, getBinaryMessageSizeLimit, getExtensions, getHandshakeHeaders, getId, getLocalAddress, getPrincipal, getRemoteAddress, getTextMessageSizeLimit, getUri, isOpen, setBinaryMessageSizeLimit, setTextMessageSizeLimit
Constructor Detail
AbstractWebSocketSession
public AbstractWebSocketSession(Map<String,Object> attributes)
Create a new instance and associate the given attributes with it.- Parameters:
attributes- attributes from the HTTP handshake to associate with the WebSocket session; the provided attributes are copied, the original map is not used.
Method Detail
getAttributes
public Map<String,Object> getAttributes()
Description copied from interface:WebSocketSessionReturn the map with attributes associated with the WebSocket session.On the server side the map can be populated initially through a
HandshakeInterceptor. On the client side the map can be populated viaWebSocketClienthandshake methods.- Specified by:
getAttributesin interfaceWebSocketSession- Returns:
- a Map with the session attributes (never
null)
getNativeSession
public T getNativeSession()
Description copied from interface:NativeWebSocketSessionReturn the underlying native WebSocketSession.- Specified by:
getNativeSessionin interfaceNativeWebSocketSession
getNativeSession
public <R> R getNativeSession(Class<R> requiredType)
Description copied from interface:NativeWebSocketSessionReturn the underlying native WebSocketSession, if available.- Specified by:
getNativeSessionin interfaceNativeWebSocketSession- Parameters:
requiredType- the required type of the session- Returns:
- the native session of the required type, or
nullif not available
initializeNativeSession
public void initializeNativeSession(T session)
checkNativeSessionInitialized
protected final void checkNativeSessionInitialized()
sendMessage
public final void sendMessage(WebSocketMessage<?> message) throws IOException
Description copied from interface:WebSocketSessionSend a WebSocket message: eitherTextMessageorBinaryMessage.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
WebSocketSessionwith theConcurrentWebSocketSessionDecorator.- Specified by:
sendMessagein interfaceWebSocketSession- Throws:
IOException- See Also:
ConcurrentWebSocketSessionDecorator
sendTextMessage
protected abstract void sendTextMessage(TextMessage message) throws IOException
- Throws:
IOException
sendBinaryMessage
protected abstract void sendBinaryMessage(BinaryMessage message) throws IOException
- Throws:
IOException
sendPingMessage
protected abstract void sendPingMessage(PingMessage message) throws IOException
- Throws:
IOException
sendPongMessage
protected abstract void sendPongMessage(PongMessage message) throws IOException
- Throws:
IOException
close
public final void close() throws IOException
Description copied from interface:WebSocketSessionClose the WebSocket connection with status 1000, i.e. equivalent to:session.close(CloseStatus.NORMAL);
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceWebSocketSession- Throws:
IOException
close
public final void close(CloseStatus status) throws IOException
Description copied from interface:WebSocketSessionClose the WebSocket connection with the given close status.- Specified by:
closein interfaceWebSocketSession- Throws:
IOException
closeInternal
protected abstract void closeInternal(CloseStatus status) throws IOException
- Throws:
IOException