Skip to content

Commit d426644

Browse files
committed
Add WebSocket::connect
Signed-off-by: Yuki Kishimoto <yukikishimoto@protonmail.com>
1 parent 5fba792 commit d426644

3 files changed

Lines changed: 23 additions & 10 deletions

File tree

examples/client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ async fn main() {
1313
let url =
1414
Url::parse("ws://oxtrdevav64z64yb7x6rjg4ntzqjhedm5b5zjqulugknhzr46ny2qbad.onion").unwrap();
1515
let mut socket: WebSocket =
16-
async_wsocket::connect(&url, &ConnectionMode::tor(), Duration::from_secs(120))
16+
WebSocket::connect(&url, &ConnectionMode::tor(), Duration::from_secs(120))
1717
.await
1818
.unwrap();
1919

src/lib.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,11 @@ impl ConnectionMode {
8989
}
9090

9191
/// Connect
92+
#[inline]
9293
pub async fn connect(
9394
url: &Url,
94-
_mode: &ConnectionMode,
95+
mode: &ConnectionMode,
9596
timeout: Duration,
9697
) -> Result<WebSocket, Error> {
97-
#[cfg(not(target_arch = "wasm32"))]
98-
let socket: WebSocket = self::native::connect(url, _mode, timeout).await?;
99-
100-
#[cfg(target_arch = "wasm32")]
101-
let socket: WebSocket = self::wasm::connect(url, timeout).await?;
102-
103-
Ok(socket)
98+
WebSocket::connect(url, mode, timeout).await
10499
}

src/socket.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
use std::ops::DerefMut;
55
use std::pin::Pin;
66
use std::task::{Context, Poll};
7+
use std::time::Duration;
78

89
#[cfg(all(feature = "tor", not(target_arch = "wasm32")))]
910
use arti_client::DataStream;
@@ -12,10 +13,11 @@ use futures_util::{Sink, Stream};
1213
use tokio::net::TcpStream;
1314
#[cfg(not(target_arch = "wasm32"))]
1415
use tokio_tungstenite::{MaybeTlsStream, WebSocketStream};
16+
use url::Url;
1517

1618
#[cfg(target_arch = "wasm32")]
1719
use crate::wasm::WsStream;
18-
use crate::{Error, Message};
20+
use crate::{ConnectionMode, Error, Message};
1921

2022
#[cfg(not(target_arch = "wasm32"))]
2123
type WsStream<T> = WebSocketStream<MaybeTlsStream<T>>;
@@ -29,6 +31,22 @@ pub enum WebSocket {
2931
Wasm(WsStream),
3032
}
3133

34+
impl WebSocket {
35+
pub async fn connect(
36+
url: &Url,
37+
_mode: &ConnectionMode,
38+
timeout: Duration,
39+
) -> Result<Self, Error> {
40+
#[cfg(not(target_arch = "wasm32"))]
41+
let socket: WebSocket = crate::native::connect(url, _mode, timeout).await?;
42+
43+
#[cfg(target_arch = "wasm32")]
44+
let socket: WebSocket = crate::wasm::connect(url, timeout).await?;
45+
46+
Ok(socket)
47+
}
48+
}
49+
3250
impl Sink<Message> for WebSocket {
3351
type Error = Error;
3452

0 commit comments

Comments
 (0)