diff --git a/src/gateway.rs b/src/gateway.rs index faba607..a1a8d7c 100644 --- a/src/gateway.rs +++ b/src/gateway.rs @@ -321,14 +321,7 @@ impl<'a> WebSocketConnection { ) = channel(32); let shared_send_channel_write = Arc::new(Mutex::new(send_channel_write)); - let shared_send_channel_read = Arc::new(Mutex::new(send_channel_read)); - - let clone_shared_send_channel_write = shared_send_channel_write.clone(); - let shared_receive_channel_read = Arc::new(Mutex::new(receive_channel_read)); - let shared_receive_channel_write = Arc::new(Mutex::new(receive_channel_write)); - - let clone_shared_receive_channel_read = shared_receive_channel_read.clone(); task::spawn(async move { let (mut ws_stream, _) = match connect_async_tls_with_config( @@ -348,14 +341,14 @@ impl<'a> WebSocketConnection { let (mut ws_tx, mut ws_rx) = ws_stream.split(); - while let Some(msg) = shared_send_channel_read.lock().await.recv().await { + // Send messages from the send channel + while let Some(msg) = send_channel_read.recv().await { ws_tx.send(msg).await.unwrap(); } - let event = while let Some(msg) = ws_rx.next().await { - shared_receive_channel_write - .lock() - .await + // Write received messages to the receive channel + while let Some(msg) = ws_rx.next().await { + receive_channel_write .send(msg.unwrap()) .await .unwrap(); @@ -363,8 +356,8 @@ impl<'a> WebSocketConnection { }); WebSocketConnection { - tx: clone_shared_send_channel_write, - rx: clone_shared_receive_channel_read, + tx: shared_send_channel_write, + rx: shared_receive_channel_read, } } } @@ -526,5 +519,9 @@ mod example { let mut gateway = Gateway::new("ws://localhost:3001/".to_string()) .await .unwrap(); + gateway.send_identify(GatewayIdentifyPayload::default()).await; + loop { + gateway.update_events().await; + } } }