Connect · normalize · process · update

From live feed to scene—
under a controlled budget.

Receive streaming geospatial events, subscribe to the records that matter, normalize geometry and coordinates, cache the latest state, batch changes and update the Unity scene without letting an unbounded feed take over the frame.

Active WebSocketsArcGIS StreamServer + TAK/CoT paths
Selective subscriptionsLayer · where · fields · target SR
Bounded processingQueue, per-frame and time budgets
Operational stateCache · layer index · GeoJSON export

End-to-end pipeline

Every message passes through an explicit lifecycle.

Transport is only the first step. A reliable geospatial feed also needs selection, parsing, identity, coordinate handling, backpressure, state management and a safe handoff to Unity’s main thread.

01CONNECTTLS · certificate · endpoint
02SUBSCRIBElayer · where · fields · SR
03PARSEevent · feature ID · geometry
04NORMALIZEvalidate · map · reproject
05STATEdedupe · cache · layer index
06UPDATEbatch · pool · LOD · render
Repository-backed behavior: the active StreamServer client includes WebSocket connection management, subscriptions, filtering, target spatial reference, message parsing, batching, feature caching and capped exponential reconnect. RealtimeDataManager adds a bounded ingestion queue, reprojection handoff, LRU-style state, layer indexes, memory-pressure handling, statistics and GeoJSON export.

Source and connector matrix

Be precise about what connects today.

The active Unity baseline and the broader delivery catalog are intentionally separated.

SourceTransport + payloadCurrent pathProcessing context
ArcGIS StreamServer
Active baseline
Secure WebSocket; Esri feature-event JSONConnect/reconnect, layer subscription, where clause, outFields, targetSR, add/update/delete event parsing, optional batching and latest-feature cache.Use for moving assets, sensor observations, incident updates or other ArcGIS-hosted streaming layers.
TAK Server / CoT
Active baseline
Authenticated REST plus CoT over WebSocket in the current TAK integrationTeam and event context, chat, tasks, mission files, notifications and local DuckDB repositories. Coordinate and marker updates are dispatched into Unity.Use for team awareness and mission collaboration; certificate, federation and server-version behavior are deployment-tested.
In-process or custom JSON
Active ingestion API
Application callback, local message bus or a customer transport feeding JObject featuresRegister a stream, queue a feature, extract its identity and geometry, reproject, cache, index and emit batch/update events.Use to integrate an approved SDK, sensor library, serial/radio gateway or local edge process without changing the core processing lifecycle.
Kafka + MQTT
Delivery connector
Topic subscription and customer-defined payload schemaAdapter modules exist in the repository’s staged real-time area but are not part of the active Unity compile baseline. Dependencies, threading, reconnect and payload mapping must be promoted and validated.Use when enterprise event buses or IoT brokers are required; connect through an edge gateway when direct device access is inappropriate.
GTFS Realtime + Moving Features
Delivery connector
Protocol buffers, HTTP polling/streaming or standards-based feature updatesAdapter work is staged rather than active. Feed version, update cadence, identity rules, time semantics and geometry mapping are part of delivery integration.Use for transit, fleet and moving-object workflows after validating source licensing and scale.
Database change or REST polling
Delivery pattern
Incremental query, timestamp/watermark or service paginationMap changed rows into the same ingestion API; retain a durable cursor externally or in approved local state; apply rate limits and retry policy.Use when the source cannot push events. Polling frequency is based on operational need, source limits and battery/network constraints.
FILTER AT THE SOURCE

Subscribe to the smallest useful stream

Choose the layer, where clause, output fields, target spatial reference and whether geometry is required. Avoid transporting attributes or records the operator will never use.

BOUND THE QUEUE

Limit work per frame and per time slice

Configure concurrent streams, retained features per stream, messages processed per frame and the maximum ingestion time allowed in that frame. Defer remaining work instead of blocking interaction.

IDENTITY + STATE

Update existing objects instead of duplicating them

Extract a stable feature ID, cache the latest version, index it by layer, remove stale or least-recently-used records and distinguish add, update and delete events.

MAIN-THREAD HANDOFF

Batch changes and reuse scene objects

Queue visualization work for Unity, reuse pooled objects by geometry type, apply layer styling, update LOD and cap visible features under the configured memory budget.

DISCONNECT + RECOVERY

Make stale state visible

Use capped exponential reconnect, connection/error events and source timestamps. Decide whether the last known position remains visible, fades, is marked stale or is removed after a mission-defined interval.

Concrete configuration context

A feed is a contract, not just a URL.

A delivery profile records the fields and operational controls required to interpret each message consistently.

REPRESENTATIVE STREAM PROFILE

streamId: vehicles
layerId: 12
sourceSR: 4326
targetSR: 4326
where: status = 'ACTIVE'
outFields:
  - id
  - callsign
  - timestamp
  - heading
  - speed
  - geometry
identityField: id
eventTimeField: timestamp
batching: enabled
cachePolicy: bounded-latest-state
SCHEMA

Which field is authoritative?

Define identity, event time, geometry, altitude, heading, speed, status and units. Document whether updates are full snapshots, partial patches or deletes.

ORDERING

What happens to late data?

Compare event time and receive time, reject or flag stale updates, and establish whether messages may arrive out of order or be delivered more than once.

QUALITY

What is rendered when input is invalid?

Validate coordinate range, spatial reference, required attributes and geometry type. Route malformed messages to diagnostics instead of silently drawing them at a default location.

Live plus offline

Streaming should enhance the local picture—not replace it.

The baseline map, mission features and recent operational state can remain local while approved feeds add changes when a connection is available.

CONNECTED

Blend live events with local context

Render incoming assets over cached basemaps, local GeoPackage layers and 3D content. Run local proximity or containment checks against each accepted update.

DEGRADED

Continue with last-known state

Retain bounded recent features, show connection and staleness status, allow local analysis to continue, and queue only the offline actions the mission profile explicitly permits.

RECONNECTED

Resume without flooding the scene

Resubscribe, request the correct snapshot or delta, reconcile by stable identity and event time, and process the recovery batch under the same frame and memory budgets.

No invented latency number.

End-to-end latency depends on the source, broker, network, message size, reprojection, analysis, target device and scene complexity. A delivery benchmark records receive-to-parse, parse-to-state and state-to-visible-update separately under representative load.

Bring a sample feed
and a load profile.

We’ll map the schema, connect the transport, define backpressure and stale-data behavior, and measure the pipeline on the intended hardware.

Plan a streaming evaluation