useBridgeStatus
Check bridge online status without WebSocket connection.
Check if bridges are online using REST polling. Useful for:
- Showing online/offline indicators in bridge lists
- Checking reachability before establishing WebSocket connections
- Monitoring multiple bridges without full connections
Usage
Single Bridge
import { useBridgeStatus } from "@deskctl/sdk";
function BridgeIndicator({ bridgeId }: { bridgeId: string }) {
const { state, online, responseTime, isChecking } = useBridgeStatus(bridgeId, {
interval: 10000,
});
return (
<div>
<span>
{state === "checking" && "⏳ Checking..."}
{state === "online" && "🟢 Online"}
{state === "offline" && "🔴 Offline"}
{state === "unknown" && "⚪ Unknown"}
</span>
{responseTime && <span>{responseTime}ms</span>}
</div>
);
}Multiple Bridges
import { useBridgesStatus, useBridges } from "@deskctl/sdk";
function BridgeSelector() {
const { bridges } = useBridges();
const bridgeIds = Array.from(bridges.keys());
const { statuses, isChecking } = useBridgesStatus(bridgeIds, { interval: 15000 });
if (isChecking && Object.keys(statuses).length === 0) {
return <div>Checking bridges...</div>;
}
return (
<select>
{bridgeIds.map((id) => {
const bridge = bridges.get(id);
const status = statuses[id];
return (
<option key={id} disabled={!status?.online}>
{bridge?.name} {status?.online ? "(online)" : "(offline)"}
</option>
);
})}
</select>
);
}API Reference
useBridgeStatus(bridgeId, options?)
Check a single bridge's status.
Parameters:
| Parameter | Type | Description |
|---|---|---|
bridgeId | string | The bridge ID to check |
options.interval | number | Polling interval in ms (default: 30000) |
options.enabled | boolean | Enable/disable polling (default: true) |
Returns:
{
state: BridgeStatusState; // "checking" | "online" | "offline" | "unknown"
online: boolean; // Whether bridge is online
responseTime: number | null; // Response time in ms
lastChecked: number | null; // Timestamp of last check
isChecking: boolean; // Whether a check is in progress
// Plus all React Query properties (data, isLoading, refetch, etc.)
}useBridgesStatus(bridgeIds, options?)
Check multiple bridges at once.
Parameters:
| Parameter | Type | Description |
|---|---|---|
bridgeIds | string[] | Array of bridge IDs to check |
options.interval | number | Polling interval in ms (default: 30000) |
options.enabled | boolean | Enable/disable polling (default: true) |
Returns:
{
statuses: Record<string, PingResult>; // Status for each bridge
isChecking: boolean; // Whether a check is in progress
// Plus all React Query properties
}Types
type BridgeStatusState = "checking" | "online" | "offline" | "unknown";
interface PingResult {
online: boolean; // Whether bridge responded
responseTime: number | null; // Response time in ms
lastChecked: number; // Timestamp of last check
}Example: Bridge List with Status
import { useBridges, useBridgesStatus } from "@deskctl/sdk";
function BridgeList() {
const { bridges } = useBridges();
const bridgeIds = Array.from(bridges.keys());
const { statuses, isChecking } = useBridgesStatus(bridgeIds, { interval: 5000 });
if (isChecking && Object.keys(statuses).length === 0) {
return <div>Checking bridges...</div>;
}
return (
<ul className="bridge-list">
{bridgeIds.map((id) => {
const bridge = bridges.get(id);
const status = statuses[id];
return (
<li key={id} className={status?.online ? "online" : "offline"}>
<span className="indicator">
{status?.online ? "Connected" : "Disconnected"}
</span>
<span className="name">{bridge?.name}</span>
{status?.responseTime && (
<span className="latency">{status.responseTime}ms</span>
)}
</li>
);
})}
</ul>
);
}Comparison with WebSocket Connection
| Feature | useBridgeStatus | WebSocket (via useBridge) |
|---|---|---|
| Connection overhead | Low (HTTP polling) | Higher (persistent connection) |
| Real-time updates | No (polling interval) | Yes |
| Use case | Status indicators, lists | Active data streaming |
| Data available | Online, response time | Full system stats, media, etc. |
Best Practice
Use useBridgeStatus for showing online/offline indicators in lists or selectors. Once
a user selects a bridge to interact with, establish a WebSocket connection using
BridgesProvider for real-time data.