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 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