public class SpincastWebsocketEndpoint extends Object implements WebsocketEndpoint
| Modifier and Type | Field and Description |
|---|---|
static String |
EXCHANGE_VARIABLE_PEER_ID |
protected static org.slf4j.Logger |
logger |
| Constructor and Description |
|---|
SpincastWebsocketEndpoint(String endpointId,
WebsocketEndpointHandler eventsHandler,
UndertowWebsocketEndpointWriterFactory undertowWebsocketEndpointWriterFactory,
SpincastUndertowConfig spincastUndertowConfig,
SpincastUndertowUtils spincastUndertowUtils)
Constructor
|
| Modifier and Type | Method and Description |
|---|---|
void |
closeEndpoint()
Closes the entire WebSocket endpoint.
|
void |
closeEndpoint(boolean sendClosingMessageToPeers)
Closes the entire WebSocket endpoint.
|
void |
closeEndpoint(int closingCode,
String closingReason)
Closes the entire WebSocket endpoint.
|
protected void |
closeEndpoint(int closingCode,
String closingReason,
boolean sendClosingMessageToPeers) |
void |
closePeer(String peerId)
Closes a specific peer connection on the endpoint.
|
void |
closePeer(String peerId,
int closingCode,
String closingReason)
Closes a specific peer connection on the endpoint.
|
String |
getEndpointId()
The endpoint id
|
protected WebsocketEndpointHandler |
getEventsHandler() |
protected Object |
getNewPeerIdLock(String peerId)
Gets the creation lock for a peer id.
|
Set<String> |
getPeersIds()
The connected peers' ids.
|
protected SpincastUndertowConfig |
getSpincastUndertowConfig() |
protected SpincastUndertowUtils |
getSpincastUndertowUtils() |
protected ExecutorService |
getThreadExecutorForAppEvents()
The ExecutorService to use to
send events to the application.
|
protected int |
getThreadExecutorForAppEventsThreadNumber()
The maximum number of concurrent threads used when
sending events to the application.
|
protected ThreadFactory |
getThreadExecutorForAppEventsThreadThreadFactory()
The ThreadFactory to use for the Executor that
sends events to the application.
|
protected int |
getThreadExecutorForAppEventsTimeoutAmount()
The timeout amount before cancelling a task when
sending events to the application.
|
protected TimeUnit |
getThreadExecutorForAppEventsTimeoutTimeUnit()
The timeout unit before cancelling a task when
sending events to the application.
|
protected UndertowWebsocketEndpointWriterFactory |
getUndertowWebsocketEndpointWriterFactory() |
protected UndertowWebsocketEndpointWriter |
getUndertowWebsocketWriter() |
protected Map<String,io.undertow.websockets.core.WebSocketChannel> |
getWebSocketChannelByPeerId() |
protected io.undertow.websockets.WebSocketProtocolHandshakeHandler |
getWebSocketProtocolHandshakeHandler()
The handler to use for the Websocket connection.
|
void |
handleConnectionRequest(io.undertow.server.HttpServerExchange exchange,
String peerId) |
protected void |
init() |
boolean |
isClosed()
Is this endpoint closed?
|
boolean |
isClosing()
Is this endpoint closing?
|
protected void |
managePeersWriteConnectionClosed(Set<String> peerIds)
Called when a write operation detected a closed connection
on some peers.
|
protected void |
removePeerChannel(String peerId) |
protected void |
removePeerChannelAndSendPeerClosedAppEvent(String peerId) |
protected void |
sendAppEventInNewThread(Runnable runnable)
Sends an event to the application in a separated thread.
|
void |
sendMessage(byte[] message)
Sends a byte array message to all
peers of the endpoint.
|
void |
sendMessage(Set<String> peerIds,
byte[] message)
Sends a byte array message to specific
peers.
|
void |
sendMessage(Set<String> peerIds,
String message)
Sends a String message to specific
peers.
|
void |
sendMessage(String message)
Sends a String message to all
peers of the endpoint.
|
void |
sendMessage(String peerId,
byte[] message)
Sends a byte array message to a specific
peer.
|
void |
sendMessage(String peerId,
String message)
Sends a String message to a specific
peer.
|
void |
sendMessageExcept(Set<String> peerIdsToRemove,
byte[] message)
Sends a byte array message to all
peers except the specified ones.
|
void |
sendMessageExcept(Set<String> peerIdsToRemove,
String message)
Sends a String message to all
peers except the specified ones.
|
void |
sendMessageExcept(String peerId,
byte[] message)
Sends a byte array message to all
peers except the specified one.
|
void |
sendMessageExcept(String peerId,
String message)
Sends a String message to all
peers except the specified one.
|
protected void |
sendOnBytesMessageAppEvent(String peerId,
byte[] message)
Sends a "byte[] message" event to the app.
|
protected void |
sendOnPeerConnectedAppEvent(String peerId)
Sends a "Peer connected " event to the app.
|
protected void |
sendOnStringMessageAppEvent(String peerId,
String message)
Sends a "String message" event to the app.
|
protected void |
sendPeerClosedAppEvent(String peerId)
Sends a "peer closed" event to the app.
|
protected void |
startSendingPings()
Starts sending automatic pings to the peers.
|
protected void |
stopSendingPings() |
protected void |
validateWebsocketClosingCode(int closingCode)
Is the Websocket closing code valid?
|
protected static final org.slf4j.Logger logger
public static final String EXCHANGE_VARIABLE_PEER_ID
public SpincastWebsocketEndpoint(String endpointId, WebsocketEndpointHandler eventsHandler, UndertowWebsocketEndpointWriterFactory undertowWebsocketEndpointWriterFactory, SpincastUndertowConfig spincastUndertowConfig, SpincastUndertowUtils spincastUndertowUtils)
@Inject protected void init()
protected Map<String,io.undertow.websockets.core.WebSocketChannel> getWebSocketChannelByPeerId()
protected WebsocketEndpointHandler getEventsHandler()
protected UndertowWebsocketEndpointWriterFactory getUndertowWebsocketEndpointWriterFactory()
protected SpincastUndertowConfig getSpincastUndertowConfig()
protected SpincastUndertowUtils getSpincastUndertowUtils()
protected UndertowWebsocketEndpointWriter getUndertowWebsocketWriter()
protected Object getNewPeerIdLock(String peerId)
public String getEndpointId()
WebsocketEndpointManagergetEndpointId in interface WebsocketEndpointManagerpublic Set<String> getPeersIds()
WebsocketEndpointManagergetPeersIds in interface WebsocketEndpointManagerpublic void closePeer(String peerId)
WebsocketEndpointManagerclosePeer in interface WebsocketEndpointManagerpublic void closePeer(String peerId, int closingCode, String closingReason)
WebsocketEndpointManagerclosePeer in interface WebsocketEndpointManagerprotected void removePeerChannelAndSendPeerClosedAppEvent(String peerId)
protected void removePeerChannel(String peerId)
protected void managePeersWriteConnectionClosed(Set<String> peerIds)
public boolean isClosing()
WebsocketEndpointManagerisClosing in interface WebsocketEndpointManagerpublic boolean isClosed()
WebsocketEndpointManagerisClosed in interface WebsocketEndpointManagerpublic void closeEndpoint()
WebsocketEndpointManagerWill try to send a "closing" message to the peers before closing their connection.
closeEndpoint in interface WebsocketEndpointManagerpublic void closeEndpoint(boolean sendClosingMessageToPeers)
WebsocketEndpointManagercloseEndpoint in interface WebsocketEndpointManagersendClosingMessageToPeers - if true,
Spincast will try to send a "closing" message to the peers
before closing their connections.public void closeEndpoint(int closingCode,
String closingReason)
WebsocketEndpointManagerWill try to send a "closing" message to the peers before closing their connection.
closeEndpoint in interface WebsocketEndpointManagerprotected void closeEndpoint(int closingCode,
String closingReason,
boolean sendClosingMessageToPeers)
protected void validateWebsocketClosingCode(int closingCode)
an - expcetion is the code is not valid.protected void startSendingPings()
protected void stopSendingPings()
public void sendMessage(String message)
WebsocketEndpointWritersendMessage in interface WebsocketEndpointWriterpublic void sendMessage(String peerId, String message)
WebsocketEndpointWritersendMessage in interface WebsocketEndpointWriterpublic void sendMessageExcept(String peerId, String message)
WebsocketEndpointWritersendMessageExcept in interface WebsocketEndpointWriterpublic void sendMessageExcept(Set<String> peerIdsToRemove, String message)
WebsocketEndpointWritersendMessageExcept in interface WebsocketEndpointWriterpublic void sendMessage(Set<String> peerIds, String message)
WebsocketEndpointWritersendMessage in interface WebsocketEndpointWriterpublic void sendMessage(byte[] message)
WebsocketEndpointWritersendMessage in interface WebsocketEndpointWriterpublic void sendMessage(String peerId, byte[] message)
WebsocketEndpointWritersendMessage in interface WebsocketEndpointWriterpublic void sendMessageExcept(String peerId, byte[] message)
WebsocketEndpointWritersendMessageExcept in interface WebsocketEndpointWriterpublic void sendMessageExcept(Set<String> peerIdsToRemove, byte[] message)
WebsocketEndpointWritersendMessageExcept in interface WebsocketEndpointWriterpublic void sendMessage(Set<String> peerIds, byte[] message)
WebsocketEndpointWritersendMessage in interface WebsocketEndpointWriterpublic void handleConnectionRequest(io.undertow.server.HttpServerExchange exchange,
String peerId)
handleConnectionRequest in interface WebsocketEndpointprotected io.undertow.websockets.WebSocketProtocolHandshakeHandler getWebSocketProtocolHandshakeHandler()
protected void sendOnPeerConnectedAppEvent(String peerId)
protected void sendOnStringMessageAppEvent(String peerId, String message)
protected void sendOnBytesMessageAppEvent(String peerId, byte[] message)
protected void sendPeerClosedAppEvent(String peerId)
protected void sendAppEventInNewThread(Runnable runnable)
protected int getThreadExecutorForAppEventsTimeoutAmount()
protected TimeUnit getThreadExecutorForAppEventsTimeoutTimeUnit()
protected ExecutorService getThreadExecutorForAppEvents()
protected int getThreadExecutorForAppEventsThreadNumber()
protected ThreadFactory getThreadExecutorForAppEventsThreadThreadFactory()
null
to use the default one.Copyright © 2019. All rights reserved.