All Classes and Interfaces
Class
Description
Plugin that must evaluate whether a WebSocket connection shall be allowed, and then authenticate the resulting
MatsSocketSession.
You are NOT supposed to implement this interface! Instances of this interface are created by methods on the
AuthenticationPlugin.AuthenticationContext
, which you are supposed to return from the AuthenticationPlugin.SessionAuthenticator
to inform
the MatsSocketServer
about your verdict of the authentication attempt.These bit-field enums (bit-field) is used by the Client to request different types of debug/meta information from
Server-side, and used by the
AuthenticationPlugin
to tell the MatsSocketServer
which types of
information the specific user is allowed to request - the resulting debug/meta information provided is the
intersection of the requested + allowed.An instance of this interface shall be returned upon invocation of
AuthenticationPlugin.newSessionAuthenticator()
.MatsSockets forwards requests from WebSocket-connected clients to a Mats Endpoint, and must get the reply back to the
client.
An implementation of CSAF relying on a shared SQL database to store the necessary information in a cluster setting.
Perform the DB-setup/migrations that
ClusterStoreAndForward_SQL
needs, using Flyway.Defines the String and Binary datatypes for some databases.
If having problems accessing the underlying common data store.
Thrown if the operation resulted in a Unique Constraint situation.
Thrown from
ClusterStoreAndForward.registerSessionAtThisNode(String, String, String, String, String, String)
if the userId does
not match the original userId that created this session.Incoming (Client-to-Server) Send, Request and Replies (Resolve and Reject) handler.
The MatsSocket Java library, along with its several clients libraries, is a WebSocket-"extension" of the Mats library
(there are currently clients for JavaScript (web and Node.js) and Dart (Dart and Flutter)).
Represents an active node-local MatsSocketSession - i.e.
The state of ActiveMatsSocketSession.
Implementation of
MatsSocketServer.ActiveMatsSocketSession
, which is serializable both for MatsSocket and Mats, i.e.RuntimeException raised from methods which directly interfaces with the
ClusterStoreAndForward
and which
cannot "hide" the situation if the data store doesn't work.Should handle Authorization evaluation on the supplied
Principal
and decide whether this message should be forwarded to the Mats fabric (or directly resolved, rejected
or denied).A live representation of a MatsSocketSession.
WebSocket CloseCodes used in MatsSocket, and for what.
Representation of a MatsSocketEndpoint.
The context which the
MatsSocketServer.IncomingAuthorizationAndAdapter
gets to work with when handling an incoming
MatsSocket message.This is the entire "Wire transport" DTO of MatsSocket.
Extension of
MatsSocketServer.MatsSocketEnvelopeDto
which carries some metadata about the processing of the Envelope.Only used for when the MatsSocketEnvelopeDto is exposed via the MatsSocket API - contains "meta-meta"
about the processing of the envelope
Only used for when the MatsSocketEnvelopeDto is exposed via the MatsSocket API - contains "meta-meta"
about the processing of the envelope
A MatsSocketSession, either as represented in the
data store
when gotten via
MatsSocketServer.getMatsSocketSessions(boolean, String, String, String)
(returning MatsSocketSessionDto
), or an ActiveMatsSocketSession
representing an active
MatsSocketSession connected to this node of the MatsSocketServer instance when gotten via
MatsSocketServer.getActiveMatsSocketSessions()
(returning ActiveMatsSocketSessionDto
),
or a LiveMatsSocketSession
which is an interface view over the actual live session
in the MatsSocketServer when gotten via MatsSocketServer.getLiveMatsSocketSessions()
.Implementation of
MatsSocketServer.MatsSocketSession
, which is serializable both for MatsSocket and Mats, i.e.All Message Types (aka MatsSocket Envelope Types) used in the wire-protocol of MatsSocket.
Used to transform the reply message from the Mats endpoint to the reply for the MatsSocket endpoint, and decide
whether to resolve or reject the waiting Client-side Promise (i.e.
Type of "remove": Either DEREGISTER, CLOSE or TIMEOUT.
If the
MatsSocketServer.MatsSocketEnvelopeDto.msg
-field is of this magic type, the String it contains - which then
needs to be proper JSON - will be output directly.A
MatsSocketServer.MatsSocketEnvelopeWithMetaDto
will be Serialized (made into object) with the "msg" field handled
specially: If it is any other class than MatsSocketStatics.DirectJson
, default handling ensues (JSON object serialization)
- but if it this particular class, it will output the (JSON) String it contains directly.A
MatsSocketServer.MatsSocketEnvelopeWithMetaDto
will be Deserialized (made into object) with the "msg" field
directly to the JSON that is present there (i.e.When trying to send messages over WebSocket and get an IOException, we do not have many options of handling - the
socket has probably closed.
Provides several hacks to get the Remote Address for different Servlet Containers implementing JSR 356 Java API for
WebSockets, as that standard does not specify a method for it.
Trick to make ThreadPoolExecutor work as anyone in the world would expect: Have a constant pool of "corePoolSize",
and then as more tasks are concurrently running than threads available, you increase the number of threads until
"maxPoolSize", at which point the rest go on queue.
Handles async sending of not-"information bearing messages", that is, messages that are idempotent.