Package com.ultikits.ultitools.websocket
Connection lifecycle, reconnect strategy and inbound message dispatch for the link to UltiPanel. The whole subsystem is driven by the framework: it is created after a successful cloud login and torn down on shutdown. The wire protocol is a private contract between this client and the panel worker, and both sides change together, so these internals are not an extension point.
Stable extension points. Three classes of this package are public, stable API for
modules, as their own javadoc and COMPATIBILITY.md state:
PanelResponderRegistry: the single-owner registry a module uses to claim a request/response responder for a type the framework does not own (as of 6.3.0, WIRE-16; as of 6.3.1 served by the UltiCloud protocol v2module.request);SensitiveCommandRegistry(as of 6.3.1): the table of commands whose arguments are redacted from everything sent to UltiCloud, reached throughUltiTools#getSensitiveCommandRegistry();CloudPlayerLinks(as of 6.3.1): the player-link API, reached throughUltiTools#getCloudPlayerLinks().
@ApiStatus.Internal for everything else in it. The JetBrains
annotations cannot mark one class stable inside an internal package, so an IDE's unstable-API
inspection flags these three as well; their javadoc and COMPATIBILITY.md are the
contract.
As of 6.3.1 the live dispatch path is the UltiCloud protocol v2 agent connection in
com.ultikits.ultitools.utils. UltiPanelWebSocketClient and the protocol v1
inbound-message dispatch table that used to serve it are no longer used; the dispatch table was
removed in 6.3.1.
This package previously also held a second, superseded dispatch mechanism — a
registry-plus-interface pair with five per-message-type implementations, formerly the sole
public class of a now-deleted handlers sub-package (WIRE-17) — replaced by the dispatch
table above in Phase 1 (plan 01-05) but left in the tree, unreferenced, until it was deleted in
6.3.0 (GEN-11, see compatibility/records/6.3.0.md). A reader arriving here from an old
link to that cluster will not find it; this is why.
- Since:
- 6.2.5
-
ClassDescriptionFrames and sends UltiCloud protocol v2 messages; internal, not for module use.Immutable limits from one accepted welcome; internal, not for module use.Creates and tracks UltiCloud player links on a module's behalf; the framework's player-link API.Why a link stopped being usable.Why a link request failed.What the handler reports about provisioning a game account for the linked player.What this server knows about the player's game authentication when the link is created.One completed link: how the web user proved the game identity, and what to provision.The answer to one
CloudPlayerLinks.create(com.ultikits.ultitools.abstracts.UltiToolsPlugin, java.util.UUID, java.lang.String, com.ultikits.ultitools.websocket.CloudPlayerLinks.GameAuth, java.util.Set<com.ultikits.ultitools.websocket.CloudPlayerLinks.LinkProof>)call: either a link, or a failure with a safe message.Receives completions and expiries of this server's links.One link that stopped being usable.An identity proof the server side can support for one link; the gateway decides which of the offered ones it actually accepts.The framework's transport for link messages; internal, not for module use.Immutable protocol request snapshot; internal, not for module use.Handles one parsed UltiCloud request; internal, not for module use.Deprecated, for removal: This API element is subject to removal in a future version.There is no replacement: the framework's own UltiCloud session (protocol 2.0.0) paces its reconnects itself.Deprecated, for removal: This API element is subject to removal in a future version.There is no replacement, as forExponentialBackoffStrategy.Writes the framework's lines about the panel connection itself to the server console, marked so the panel's log stream never sends them back to the panel (as of 6.3.0).The mark: a record of this type is a panel-connection line.The single-owner registry a module uses to claim a request/response responder for a panel message type the framework itself does not own (WIRE-16, D-26/D-27).An immutable pairing of a responder function with the module name that registered it and, when the registration named one, the module instance (#506).Deprecated, for removal: This API element is subject to removal in a future version.There is no replacement: the framework's own UltiCloud session (protocol 2.0.0) paces its reconnects itself.The table of commands whose arguments must never reach UltiCloud, and the redaction rule that enforces it.Deprecated, for removal: This API element is subject to removal in a future version.There is no replacement: the framework's own UltiCloud session (protocol 2.0.0) carries every panel request, and modules answer panel requests throughPanelResponderRegistry.