1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
//! A versatile websocket client that supports many cryptocurrency exchanges. //! //! ## Example //! //! ``` //! use crypto_ws_client::{BinanceSpotWSClient, WSClient}; //! //! let mut ws_client = BinanceSpotWSClient::new(Box::new(|msg| println!("{}", msg)), None); //! let channels = vec!["btcusdt@aggTrade".to_string(), "btcusdt@depth".to_string(),]; //! ws_client.subscribe(&channels); //! ws_client.run(Some(2)); // run for 2 seconds //! ws_client.close(); //! ``` mod clients; pub use clients::binance::*; pub use clients::bitmex::*; pub use clients::bitstamp::*; pub use clients::huobi::*; pub use clients::kraken::*; pub use clients::mxc::*; pub use clients::okex::*; /// The public interface of every WebSocket client. pub trait WSClient<'a> { /// Create a new client. /// /// # Arguments /// /// * `on_msg` - The message handler /// * `url` - Optional server url, usually you don't need specify it fn new(on_msg: Box<dyn FnMut(String) + 'a>, url: Option<&str>) -> Self; /// Subscribe channels. fn subscribe(&mut self, channels: &[String]); /// Unsubscribe channels. fn unsubscribe(&mut self, channels: &[String]); /// Start the infinite loop until the server closes the connection. /// /// # Arguments /// /// * `duration` - How many seconds to run, None means infinite. fn run(&mut self, duration: Option<u64>); /// Close the client. fn close(&mut self); }