SignalR Streaming
Beacon Tower provides real-time push notifications over SignalR, enabling dashboards and integrations to receive live asset telemetry and alarm updates without polling.
Overview
SignalR streaming is the recommended approach for applications that need low-latency, real-time asset data — operational dashboards, live monitoring UIs, and event-driven integrations.
Connection Flow
Client Application
↓
POST /push/negotiate (obtain connection URL + token)
↓
Connect to SignalR hub (WebSocket)
↓
POST /push/subscription (subscribe to asset data)
↓
Receive real-time telemetry and alarm updates
1. Negotiate Connection
Obtain a SignalR connection URL and access token:
curl -X POST https://api.beacontower.ai/push/negotiate \
-H "Authorization: Bearer $TOKEN"
Response:
{
"url": "wss://beacon-signalr.service.signalr.net/client/?hub=push",
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Use the returned url and accessToken to establish a SignalR client connection.
2. Subscribe to Assets
Once connected, create a subscription to receive updates:
curl -X POST https://api.beacontower.ai/push/subscription \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"connectionId": "your-signalr-connection-id",
"topic": "telemetry",
"assets": ["pump-001", "pump-002"],
"samplingType": "none"
}'
| Field | Type | Required | Description |
|---|---|---|---|
connectionId | string | Yes | Your SignalR connection identifier |
topic | string | Yes | "telemetry" or "alarm" |
assets | string[] | Yes | Asset IDs to monitor |
samplingType | string | Yes | "none" (all updates) or "first" (first per interval) |
Response:
{
"subscriptionId": "sub-12345",
"expiresAt": "2026-02-25T15:13:00Z"
}
3. Manage Subscriptions
Subscriptions have a TTL of 600 seconds (10 minutes). Renew them to keep receiving updates.
# Renew
PUT /push/subscription/{subscriptionId}
# Get details
GET /push/subscription/{subscriptionId}
# Unsubscribe
DELETE /push/subscription/{subscriptionId}
Subscription Topics
| Topic | Updates |
|---|---|
telemetry | Telemetry data from subscribed assets |
alarm | Alarm raised/cleared notifications from subscribed assets |
Sampling Types
| Type | Behavior | Use Case |
|---|---|---|
none | Send all updates immediately | Real-time monitoring, event-driven logic |
first | Send only the first update per sampling window | Reduced bandwidth, periodic display updates |
When to Use SignalR vs MQTT vs REST
- SignalR — Browser-based applications, web dashboards, UIs built with JavaScript/TypeScript. Uses WebSocket transport, integrates natively with ASP.NET Core and JavaScript SignalR clients.
- MQTT Publishing — Backend services, IoT consumers, system-to-system integration. Uses standard MQTT protocol, works with any MQTT client library.
- REST API — Historical analysis, batch queries, aggregated timeseries. Request-response pattern, no persistent connection needed.
Next Steps
- MQTT Publishing — Subscribe to asset data over MQTT
- REST API — Query historical and latest timeseries data
- Telemetry and Timeseries — Full timeseries query reference with aggregation options