Module client

Module client 

Source
Expand description

§Hermes Client

This module provides a high-level client for connecting to Hermes data streams. The client maintains multiple WebSocket connections for redundancy and provides automatic deduplication of messages.

§Features

  • Multiple redundant WebSocket connections
  • Automatic message deduplication
  • Exponential backoff for reconnections
  • Configurable timeouts and channel capacities
  • Builder pattern for easy configuration

§Basic Usage

use hermes_client::{HermesClientBuilder, HermesClientMessageSubscribe};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let mut client = HermesClientBuilder::default()
        .with_num_connections(2)
        .build()?;

    let mut receiver = client.start().await?;

    // Subscribe to price feeds
    let subscribe_request = HermesClientMessageSubscribe {
        // ... configure subscription
    };
    client.subscribe(subscribe_request).await?;

    // Process incoming messages
    while let Some(response) = receiver.recv().await {
        println!("Received: {:?}", response);
    }

    Ok(())
}

Structs§

HermesClient
A high-performance client for connecting to Hermes data streams.
HermesClientBuilder
A builder for creating HermesClient instances with customizable configuration.