public abstract class ClusterContext
extends java.lang.Object
There is exactly one instance per cluster node and all communication is realized using this instance.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CLUSTER_CONTEXT
ClusterContext registration property.
|
Constructor and Description |
---|
ClusterContext() |
Modifier and Type | Method and Description |
---|---|
abstract void |
broadcastBinary(java.lang.String endpointPath,
byte[] data)
Broadcast binary message.
|
abstract void |
broadcastText(java.lang.String endpointPath,
java.lang.String text)
Broadcast text message.
|
abstract java.util.concurrent.Future<java.lang.Void> |
close(java.lang.String sessionId)
Close remote session.
|
abstract java.util.concurrent.Future<java.lang.Void> |
close(java.lang.String sessionId,
CloseReason closeReason)
Close remote session with custom
CloseReason . |
abstract java.lang.String |
createConnectionId()
Create connection id.
|
abstract java.lang.String |
createSessionId()
Create session id.
|
abstract void |
destroyDistributedUserProperties(java.lang.String connectionId)
Destroy map which holds distributed user properties.
|
abstract java.util.Map<RemoteSession.DistributedMapKey,java.lang.Object> |
getDistributedSessionProperties(java.lang.String sessionId)
Get the map containing session properties to be shared among nodes.
|
abstract java.util.Map<java.lang.String,java.lang.Object> |
getDistributedUserProperties(java.lang.String connectionId)
Get the map containing session user properties to be shared among nodes.
|
abstract java.util.Set<java.lang.String> |
getRemoteSessionIds(java.lang.String endpointPath)
Get set containing session ids of all remote sessions registered to given endpoint path.
|
abstract boolean |
isSessionOpen(java.lang.String sessionId,
java.lang.String endpointPath)
Get information about session state.
|
abstract void |
registerBroadcastListener(java.lang.String endpointPath,
BroadcastListener listener)
Register broadcast listener.
|
abstract void |
registerSession(java.lang.String sessionId,
java.lang.String endpointPath,
SessionEventListener listener)
Register local session.
|
abstract void |
registerSessionListener(java.lang.String endpointPath,
SessionListener listener)
Register session listener.
|
abstract void |
removeSession(java.lang.String sessionId,
java.lang.String endpointPath)
Remove session from this Cluster context.
|
abstract java.util.concurrent.Future<java.lang.Void> |
sendBinary(java.lang.String sessionId,
byte[] data)
Send binary message.
|
abstract java.util.concurrent.Future<java.lang.Void> |
sendBinary(java.lang.String sessionId,
byte[] data,
boolean isLast)
Send partial binary message.
|
abstract void |
sendBinary(java.lang.String sessionId,
byte[] data,
SendHandler sendHandler)
Send binary message with
SendHandler . |
abstract java.util.concurrent.Future<java.lang.Void> |
sendPing(java.lang.String sessionId,
byte[] data)
Send ping message.
|
abstract java.util.concurrent.Future<java.lang.Void> |
sendPong(java.lang.String sessionId,
byte[] data)
Send pong message.
|
abstract java.util.concurrent.Future<java.lang.Void> |
sendText(java.lang.String sessionId,
java.lang.String text)
Send text message.
|
abstract java.util.concurrent.Future<java.lang.Void> |
sendText(java.lang.String sessionId,
java.lang.String text,
boolean isLast)
Send partial text message.
|
abstract void |
sendText(java.lang.String sessionId,
java.lang.String text,
SendHandler sendHandler)
Send text message with
SendHandler . |
abstract void |
shutdown()
Shutdown this ClusterContext.
|
public static final java.lang.String CLUSTER_CONTEXT
ClusterContext is registered to the Server container via properties passed to
ServerContainerFactory.createServerContainer(java.util.Map)
.
public abstract java.util.concurrent.Future<java.lang.Void> sendText(java.lang.String sessionId, java.lang.String text)
sessionId
- remote session id.text
- text to be sent.Future.get()
returns when there is an
acknowledge from the other node that the message has been successfully sent. If there is any exception, it will
be wrapped into ExecutionException
and thrown.public abstract java.util.concurrent.Future<java.lang.Void> sendText(java.lang.String sessionId, java.lang.String text, boolean isLast)
sessionId
- remote session id.text
- text to be sent.isLast
- true
when the partial message being sent is the last part of the message.Future.get()
returns when there is an
acknowledge from the other node that the message has been successfully sent. If there is any exception, it will
be wrapped into ExecutionException
and thrown.public abstract java.util.concurrent.Future<java.lang.Void> sendBinary(java.lang.String sessionId, byte[] data)
sessionId
- remote session id.data
- data to be sent.Future.get()
returns when there is an
acknowledge from the other node that the message has been successfully sent. If there is any exception, it will
be wrapped into ExecutionException
and thrown.public abstract java.util.concurrent.Future<java.lang.Void> sendBinary(java.lang.String sessionId, byte[] data, boolean isLast)
sessionId
- remote session id.data
- data to be sent.isLast
- true
when the partial message being sent is the last part of the message.Future.get()
returns when there is an
acknowledge from the other node that the message has been successfully sent. If there is any exception, it will
be wrapped into ExecutionException
and thrown.public abstract java.util.concurrent.Future<java.lang.Void> sendPing(java.lang.String sessionId, byte[] data)
sessionId
- remote session id.data
- data to be sent as ping message payload.Future.get()
returns when there is an
acknowledge from the other node that the message has been successfully sent. If there is any exception, it will
be wrapped into ExecutionException
and thrown.public abstract java.util.concurrent.Future<java.lang.Void> sendPong(java.lang.String sessionId, byte[] data)
sessionId
- remote session id.data
- data to be sent as pong message payload.Future.get()
returns when there is an
acknowledge from the other node that the message has been successfully sent. If there is any exception, it will
be wrapped into ExecutionException
and thrown.public abstract void sendText(java.lang.String sessionId, java.lang.String text, SendHandler sendHandler)
SendHandler
.sessionId
- remote session id.text
- text to be sent.sendHandler
- sendhandler instance on which
SendHandler.onResult(jakarta.websocket.SendResult)
will be invoked.SendHandler
public abstract void sendBinary(java.lang.String sessionId, byte[] data, SendHandler sendHandler)
SendHandler
.sessionId
- remote session id.data
- data to be sent.sendHandler
- sendhandler instance on which
SendHandler.onResult(jakarta.websocket.SendResult)
will be invoked.SendHandler
public abstract void broadcastText(java.lang.String endpointPath, java.lang.String text)
endpointPath
- endpoint path identifying sessions alignment to the endpoint.text
- message to be broadcasted.public abstract void broadcastBinary(java.lang.String endpointPath, byte[] data)
endpointPath
- endpoint path identifying sessions alignment to the endpoint.data
- data to be broadcasted.public abstract boolean isSessionOpen(java.lang.String sessionId, java.lang.String endpointPath)
sessionId
- remote session id.endpointPath
- endpoint path identifying sessions alignment to the endpoint.true
when session is opened, false
otherwise.Session.isOpen()
public abstract java.util.concurrent.Future<java.lang.Void> close(java.lang.String sessionId)
sessionId
- remote session id.Future.get()
returns when there is an
acknowledge from the other node that the command was successfully executed. If there is any exception, it will
be
wrapped into ExecutionException
and thrown.public abstract java.util.concurrent.Future<java.lang.Void> close(java.lang.String sessionId, CloseReason closeReason)
CloseReason
.sessionId
- remote session id.closeReason
- custom close reason.Future.get()
returns when there is an
acknowledge from the other node that the command was successfully executed. If there is any exception, it will
be
wrapped into ExecutionException
and thrown.public abstract java.util.Set<java.lang.String> getRemoteSessionIds(java.lang.String endpointPath)
endpointPath
- endpoint path identifying endpoint within the cluster.public abstract java.lang.String createSessionId()
public abstract java.lang.String createConnectionId()
public abstract void registerSession(java.lang.String sessionId, java.lang.String endpointPath, SessionEventListener listener)
Session id will be broadcasted to other nodes which will call getDistributedSessionProperties(String)
and process its values. The map must be ready before this method is invoked.
sessionId
- session id to be registered.endpointPath
- endpoint path identifying sessions alignment to the endpoint.listener
- session event listener. When remote node sends a message to this session, it will be
invoked.SessionEventListener
public abstract void registerSessionListener(java.lang.String endpointPath, SessionListener listener)
Gets notification about session creation .SessionListener#onSessionOpened(String)
and destruction .SessionListener#onSessionClosed(String)
.
endpointPath
- endpoint path identifying sessions alignment to the endpoint.listener
- listener instance.SessionListener
public abstract void registerBroadcastListener(java.lang.String endpointPath, BroadcastListener listener)
Gets notification about broadcasted messages. Used as an optimized variant of standard websocket broadcast
pattern. In this case, only one message is sent to all cluster nodes (instead n
when n
represent
number of clients connected to remote nodes).
endpointPath
- endpoint path identifying sessions alignment to the endpoint.listener
- listener instance.BroadcastListener
public abstract java.util.Map<RemoteSession.DistributedMapKey,java.lang.Object> getDistributedSessionProperties(java.lang.String sessionId)
Changes must be propagated to remote instances.
sessionId
- remote session id.public abstract java.util.Map<java.lang.String,java.lang.Object> getDistributedUserProperties(java.lang.String connectionId)
Changes must be propagated to remote instances.
connectionId
- connection id. Connection id may be shared among subsequent TCP connection - represents
logical connection.public abstract void destroyDistributedUserProperties(java.lang.String connectionId)
This method should be invoked only when session is properly closed.
connectionId
- connection id. Connection id may be shared among subsequent TCP connection - represents
logical connection.public abstract void removeSession(java.lang.String sessionId, java.lang.String endpointPath)
sessionId
- session id.endpointPath
- endpoint path identifying sessions alignment to the endpoint.public abstract void shutdown()
This will stop whole clustered node, any operation related to this cluster context will fail after this method is invoked.
Copyright © 2012–2020 Oracle Corporation. All rights reserved.