Package org.spincast.plugins.undertow
Class SpincastWebsocketEndpoint
java.lang.Object
org.spincast.plugins.undertow.SpincastWebsocketEndpoint
- All Implemented Interfaces:
org.spincast.core.websocket.WebsocketEndpointManager,org.spincast.core.websocket.WebsocketEndpointWriter,WebsocketEndpoint
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionSpincastWebsocketEndpoint(String endpointId, org.spincast.core.websocket.WebsocketEndpointHandler eventsHandler, UndertowWebsocketEndpointWriterFactory undertowWebsocketEndpointWriterFactory, SpincastUndertowConfig spincastUndertowConfig, SpincastUndertowUtils spincastUndertowUtils) Constructor -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidcloseEndpoint(boolean sendClosingMessageToPeers) voidcloseEndpoint(int closingCode, String closingReason) protected voidcloseEndpoint(int closingCode, String closingReason, boolean sendClosingMessageToPeers) voidvoidprotected org.spincast.core.websocket.WebsocketEndpointHandlerprotected ObjectgetNewPeerIdLock(String peerId) Gets the creation lock for a peer id.protected SpincastUndertowConfigprotected SpincastUndertowUtilsprotected ExecutorServiceThe ExecutorService to use to send events to the application.protected intThe maximum number of concurrent threads used when sending events to the application.protected ThreadFactoryThe ThreadFactory to use for the Executor that sends events to the application.protected intThe timeout amount before cancelling a task when sending events to the application.protected TimeUnitThe timeout unit before cancelling a task when sending events to the application.protected UndertowWebsocketEndpointWriterFactoryprotected UndertowWebsocketEndpointWriterprotected io.undertow.websockets.WebSocketProtocolHandshakeHandlerThe handler to use for the Websocket connection.voidhandleConnectionRequest(io.undertow.server.HttpServerExchange exchange, String peerId) protected voidinit()booleanisClosed()booleanprotected voidmanagePeersWriteConnectionClosed(Set<String> peerIds) Called when a write operation detected a closed connection on some peers.protected voidremovePeerChannel(String peerId) protected voidprotected voidsendAppEventInNewThread(Runnable runnable) Sends an event to the application in a separated thread.voidsendMessage(byte[] message) voidsendMessage(String message) voidsendMessage(String peerId, byte[] message) voidsendMessage(String peerId, String message) voidsendMessage(Set<String> peerIds, byte[] message) voidsendMessage(Set<String> peerIds, String message) voidsendMessageExcept(String peerId, byte[] message) voidsendMessageExcept(String peerId, String message) voidsendMessageExcept(Set<String> peerIdsToRemove, byte[] message) voidsendMessageExcept(Set<String> peerIdsToRemove, String message) protected voidsendOnBytesMessageAppEvent(String peerId, byte[] message) Sends a "byte[] message" event to the app.protected voidsendOnPeerConnectedAppEvent(String peerId) Sends a "Peer connected " event to the app.protected voidsendOnStringMessageAppEvent(String peerId, String message) Sends a "String message" event to the app.protected voidsendPeerClosedAppEvent(String peerId) Sends a "peer closed" event to the app.protected voidStarts sending automatic pings to the peers.protected voidprotected voidvalidateWebsocketClosingCode(int closingCode) Is the Websocket closing code valid?
-
Field Details
-
logger
protected static final org.slf4j.Logger logger -
EXCHANGE_VARIABLE_PEER_ID
-
-
Constructor Details
-
SpincastWebsocketEndpoint
public SpincastWebsocketEndpoint(String endpointId, org.spincast.core.websocket.WebsocketEndpointHandler eventsHandler, UndertowWebsocketEndpointWriterFactory undertowWebsocketEndpointWriterFactory, SpincastUndertowConfig spincastUndertowConfig, SpincastUndertowUtils spincastUndertowUtils) Constructor
-
-
Method Details
-
init
@Inject protected void init() -
getWebSocketChannelByPeerId
-
getEventsHandler
protected org.spincast.core.websocket.WebsocketEndpointHandler getEventsHandler() -
getUndertowWebsocketEndpointWriterFactory
-
getSpincastUndertowConfig
-
getSpincastUndertowUtils
-
getUndertowWebsocketWriter
-
getNewPeerIdLock
Gets the creation lock for a peer id. -
getEndpointId
- Specified by:
getEndpointIdin interfaceorg.spincast.core.websocket.WebsocketEndpointManager
-
getPeersIds
- Specified by:
getPeersIdsin interfaceorg.spincast.core.websocket.WebsocketEndpointManager
-
closePeer
- Specified by:
closePeerin interfaceorg.spincast.core.websocket.WebsocketEndpointManager
-
closePeer
- Specified by:
closePeerin interfaceorg.spincast.core.websocket.WebsocketEndpointManager
-
removePeerChannelAndSendPeerClosedAppEvent
-
removePeerChannel
-
managePeersWriteConnectionClosed
Called when a write operation detected a closed connection on some peers. -
isClosing
public boolean isClosing()- Specified by:
isClosingin interfaceorg.spincast.core.websocket.WebsocketEndpointManager
-
isClosed
public boolean isClosed()- Specified by:
isClosedin interfaceorg.spincast.core.websocket.WebsocketEndpointManager
-
closeEndpoint
public void closeEndpoint()- Specified by:
closeEndpointin interfaceorg.spincast.core.websocket.WebsocketEndpointManager
-
closeEndpoint
public void closeEndpoint(boolean sendClosingMessageToPeers) - Specified by:
closeEndpointin interfaceorg.spincast.core.websocket.WebsocketEndpointManager
-
closeEndpoint
- Specified by:
closeEndpointin interfaceorg.spincast.core.websocket.WebsocketEndpointManager
-
closeEndpoint
protected void closeEndpoint(int closingCode, String closingReason, boolean sendClosingMessageToPeers) -
validateWebsocketClosingCode
protected void validateWebsocketClosingCode(int closingCode) Is the Websocket closing code valid?- Throws:
an- expcetion is the code is not valid.
-
startSendingPings
protected void startSendingPings()Starts sending automatic pings to the peers. -
stopSendingPings
protected void stopSendingPings() -
sendMessage
- Specified by:
sendMessagein interfaceorg.spincast.core.websocket.WebsocketEndpointWriter
-
sendMessage
- Specified by:
sendMessagein interfaceorg.spincast.core.websocket.WebsocketEndpointWriter
-
sendMessageExcept
- Specified by:
sendMessageExceptin interfaceorg.spincast.core.websocket.WebsocketEndpointWriter
-
sendMessageExcept
- Specified by:
sendMessageExceptin interfaceorg.spincast.core.websocket.WebsocketEndpointWriter
-
sendMessage
- Specified by:
sendMessagein interfaceorg.spincast.core.websocket.WebsocketEndpointWriter
-
sendMessage
public void sendMessage(byte[] message) - Specified by:
sendMessagein interfaceorg.spincast.core.websocket.WebsocketEndpointWriter
-
sendMessage
- Specified by:
sendMessagein interfaceorg.spincast.core.websocket.WebsocketEndpointWriter
-
sendMessageExcept
- Specified by:
sendMessageExceptin interfaceorg.spincast.core.websocket.WebsocketEndpointWriter
-
sendMessageExcept
- Specified by:
sendMessageExceptin interfaceorg.spincast.core.websocket.WebsocketEndpointWriter
-
sendMessage
- Specified by:
sendMessagein interfaceorg.spincast.core.websocket.WebsocketEndpointWriter
-
handleConnectionRequest
- Specified by:
handleConnectionRequestin interfaceWebsocketEndpoint
-
getWebSocketProtocolHandshakeHandler
protected io.undertow.websockets.WebSocketProtocolHandshakeHandler getWebSocketProtocolHandshakeHandler()The handler to use for the Websocket connection. -
sendOnPeerConnectedAppEvent
Sends a "Peer connected " event to the app. -
sendOnStringMessageAppEvent
Sends a "String message" event to the app. -
sendOnBytesMessageAppEvent
Sends a "byte[] message" event to the app. -
sendPeerClosedAppEvent
Sends a "peer closed" event to the app. -
sendAppEventInNewThread
Sends an event to the application in a separated thread. -
getThreadExecutorForAppEventsTimeoutAmount
protected int getThreadExecutorForAppEventsTimeoutAmount()The timeout amount before cancelling a task when sending events to the application. -
getThreadExecutorForAppEventsTimeoutTimeUnit
The timeout unit before cancelling a task when sending events to the application. -
getThreadExecutorForAppEvents
The ExecutorService to use to send events to the application. -
getThreadExecutorForAppEventsThreadNumber
protected int getThreadExecutorForAppEventsThreadNumber()The maximum number of concurrent threads used when sending events to the application. -
getThreadExecutorForAppEventsThreadThreadFactory
The ThreadFactory to use for the Executor that sends events to the application.- Returns:
- the ThreadFactory to use or
nullto use the default one.
-