OmnyShellHubService class

The OmnyShell Hub as an omnyhub omnyhub.Service, so its broker can be hosted on any omnyhub.OmnyHub listener instead of owning one.

This is what lets a different Hub — an OmnyServer Hub, say — also serve OmnyShell nodes: mount this at a path and OmnyShell traffic is routed to it while the host keeps its own surfaces on the same port and certificate.

// On an OmnyServer (or any omnyhub) Hub:
await hub.registerService(OmnyShellHubService(broker, mount: '/shell'));
// Nodes then dial wss://host:8443/shell

HubBroker is transport-agnostic — it is driven by accepting connections — so this class is only an adapter: omnyhub hands over a raw omnyhub.Connection, and FrameConnection wraps it in OmnyShell's frame codec.

The broker must own the socket un-intercepted. OmnyShell authenticates in band, after the upgrade: the Hub speaks first with a challenge hello, and the peer answers with an auth.request. So this route must not be given an omnyhub.ConnectionAuthenticator — one would consume the very frames the broker is waiting for. Note that on omnyhub a route's null authenticator means inherit the hub-wide one, not none: a host hub that sets a hub-wide connection authenticator must ensure it does not reach this mount.

Constructors

OmnyShellHubService(HubBroker broker, {String name = 'omnyshell', String mount = '/', FrameCodec codecFactory()?, bool ownsBroker = true})
Mounts broker as a service.

Properties

broker → HubBroker
The broker that authenticates, authorizes and relays.
final
codecFactory → FrameCodec Function()?
Builds the frame codec for each accepted connection.
final
hashCode → int
The hash code for this object.
no setterinherited
mount → String
finalinherited
name → String
finalinherited
ownsBroker → bool
Whether this service owns broker's lifecycle.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

handle(HubRequest request) → Future<HubResponse>
A plain HTTP request on the mount: this is a WebSocket endpoint, so answer with a small status document rather than an upgrade.
handleConnection(Connection connection, HubRequest request) → void
Handles an upgraded WebSocket connection whose upgrade request matched this service. Services that do not serve WebSockets should close the connection.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
start() → Future<void>
Starts the service (open resources, connect to backends, ...). Called by the hub on OmnyHub.start or when registered into a running hub.
stop() → Future<void>
Stops the service and releases its resources.
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited