A TypeScript client library for connecting to Substrate Telemetry backend service. Get real-time information about nodes in Substrate-based networks like Polkadot and Kusama.
yarn install
import { TelemetryClient, CHAIN_GENESIS } from 'substrate-telemetry-client';
const client = new TelemetryClient();
await client.connect();
client.subscribe(CHAIN_GENESIS.POLKADOT);
// Event-based updates example:
client.onUpdate((nodes) => {
console.log('Total nodes:', nodes.length);
});
// Polling-based updates examples:
// 1. Get all nodes
const nodes = client.getNodes();
console.log('Current nodes:', nodes.length);
// 2. Get nodes filtered by node names
const nodeNames = ['Alice', 'Bob', 'Charlie'];
const specificNodes = client.getNodesFiltered(node => nodeNames.includes(node.name));
The client can optionally enhance node data with geolocation information from ipinfo.io when node IP is available in the feed:
const client = new TelemetryClient({
ipInfo: {
token: 'your-ipinfo-token',
cacheTimeout: 12 * 60 * 60 * 1000 // 12 hours
}
});
interface TelemetryConfig {
url?: string; // Telemetry WebSocket URL
autoReconnect?: boolean; // Auto reconnect on disconnect
maxReconnectAttempts?: number; // Max reconnection attempts
ipInfo?: {
token: string; // ipinfo.io API token
cacheTimeout?: number; // Cache duration in ms
requestTimeout?: number; // Request timeout in ms
};
}
connect(): Promise<void>
- Connect to telemetry servicedisconnect(): void
- Disconnect from servicesubscribe(chain: GenesisHash): void
- Subscribe to chain updatesonUpdate(handler: (nodes: NodeInfo[]) => void): () => void
- Register update handlergetNodes(): NodeInfo[]
- Get all nodesgetNode(id: number): NodeInfo | undefined
- Get specific nodegetNodesFiltered(predicate: (node: NodeInfo) => boolean): NodeInfo[]
- Filter nodesgetNodesSorted(compareFn: (a: NodeInfo, b: NodeInfo) => number): NodeInfo[]
- Sort nodesgetChainStats(): ChainStats | undefined
- Get chain statistics
- Polkadot (
CHAIN_GENESIS.POLKADOT
) - Kusama (
CHAIN_GENESIS.KUSAMA
) - Other Substrate-based networks (use their genesis hash)
# Install dependencies
yarn install
# Build
yarn build
# Run examples
yarn basic
yarn detailed
You can find example code in:
examples/basic.ts
- Simple connection and node information displayexamples/detailed.ts
- Detailed output, IPInfo usage example
If you find a bug or have a feature request, please create an issue in our GitHub repository.
MIT License