1mod cache;
2mod client;
3mod error;
4mod stats;
5mod system;
6
7pub use cache::Cache;
8pub use client::Client;
9pub use error::Error;
10pub use stats::Stats;
11use std::sync::{Arc, Mutex};
12use tungstenite::{handshake::client::Response, stream::MaybeTlsStream};
13
14pub fn connect(url: &str) -> Result<(Client, Response), Error> {
15 let (mut socket, res) = tungstenite::connect(url)?;
17
18 match socket.get_mut() {
20 MaybeTlsStream::Plain(stream) => stream.set_nonblocking(true)?,
21 MaybeTlsStream::Rustls(stream) => stream.get_mut().set_nonblocking(true)?,
22 _ => {}
23 }
24
25 let client = Client::new(Arc::new(Mutex::new(socket)));
27 Ok((client, res))
28}