Skip to main content

Crate kraken_ws

Crate kraken_ws 

Source
Expand description

Native WebSocket client for Kraken WebSocket API v2

This crate provides a production-ready WebSocket client for connecting to Kraken’s public and private market data feeds.

§Features

  • Automatic reconnection with exponential backoff
  • Subscription management with restoration after reconnect
  • Orderbook state maintenance with checksum validation
  • Event-driven architecture with async streams

§Example

use kraken_ws::{KrakenConnection, ConnectionConfig, Endpoint};
use kraken_types::Depth;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let config = ConnectionConfig::new()
        .with_endpoint(Endpoint::Public)
        .with_depth(Depth::D10);

    let conn = KrakenConnection::new(config);
    conn.subscribe_orderbook(vec!["BTC/USD".to_string()]);

    let mut events = conn.take_event_receiver().unwrap();

    // Spawn connection task
    tokio::spawn(async move {
        conn.connect_and_run().await
    });

    // Process events
    while let Some(event) = events.recv().await {
        println!("{:?}", event);
    }

    Ok(())
}

Re-exports§

pub use circuit_breaker::CircuitBreaker;
pub use circuit_breaker::CircuitBreakerConfig;
pub use circuit_breaker::CircuitState;
pub use circuit_breaker::CircuitBreakerStats;
pub use connection::ConnectionConfig;
pub use connection::ConnectionState;
pub use connection::KrakenConnection;
pub use connection::BackpressurePolicy;
pub use connection::EventReceiver;
pub use endpoint::Endpoint;
pub use events::ConnectionEvent;
pub use events::DisconnectReason;
pub use events::Event;
pub use events::MarketEvent;
pub use events::SubscriptionEvent;
pub use events::PrivateEvent;
pub use events::OrderStatus;
pub use events::TrackedOrder;
pub use events::OrderFill;
pub use events::ExecutionType;
pub use events::OrderChange;
pub use events::BalanceInfo;
pub use events::L3Event;
pub use order_tracker::OrderTracker;
pub use order_tracker::LifecycleOrder;
pub use order_tracker::LifecycleState;
pub use order_tracker::Fill;
pub use order_tracker::TrackerConfig;
pub use order_tracker::TrackerStats;
pub use rate_limiter::KrakenRateLimiter;
pub use rate_limiter::SharedRateLimiter;
pub use reconnect::ReconnectConfig;
pub use subscription::Subscription;
pub use trading::TradingClient;
pub use transport::Transport;
pub use transport::TransportError;
pub use transport::WsTransport;
pub use hooks::Hooks;
pub use hooks::ConnectInfo;
pub use hooks::DisconnectInfo;
pub use hooks::SubscriptionInfo;
pub use hooks::ChecksumInfo;

Modules§

circuit_breaker
Circuit Breaker Pattern
connection
WebSocket connection management
endpoint
WebSocket endpoint definitions
events
Connection and subscription events
hooks
Observability hooks for connection lifecycle monitoring
order_tracker
Order Lifecycle Tracker
rate_limiter
Thread-safe rate limiter for Kraken WebSocket connections
reconnect
Reconnection configuration with exponential backoff
subscription
Subscription management
trading
WebSocket trading functionality
transport
WebSocket transport abstraction