feat: ✨ Disconnect handler
This commit is contained in:
parent
604806670e
commit
5981ecf148
1 changed files with 7 additions and 6 deletions
|
@ -15,7 +15,7 @@ use tower_http::cors::CorsLayer;
|
|||
|
||||
const SERVER_ADDRESS: &str = "192.168.1.3:4546";
|
||||
|
||||
static USER_MESSAGES: LazyLock<RwLock<VecDeque<UserMessages>>> =
|
||||
static ONLINE_USERS: LazyLock<RwLock<VecDeque<UserMessages>>> =
|
||||
LazyLock::new(|| VecDeque::new().into());
|
||||
|
||||
#[derive(Debug)]
|
||||
|
@ -57,7 +57,7 @@ async fn websocket_handler(websocket: UpgradeFut) {
|
|||
let (message_sender, message_receiver) = broadcast::channel(100);
|
||||
|
||||
if let Ok(received_frame) = websocket_receiver
|
||||
.read_frame::<_, WebSocketError>(&mut move |_| async { unreachable!() })
|
||||
.read_frame::<_, WebSocketError>(&mut move |_| async { Ok(()) })
|
||||
.await
|
||||
{
|
||||
if let OpCode::Text = received_frame.opcode {
|
||||
|
@ -70,7 +70,7 @@ async fn websocket_handler(websocket: UpgradeFut) {
|
|||
message_receiver,
|
||||
};
|
||||
user = new_user.user.to_owned();
|
||||
USER_MESSAGES.write().await.push_back(new_user);
|
||||
ONLINE_USERS.write().await.push_back(new_user);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
@ -78,11 +78,11 @@ async fn websocket_handler(websocket: UpgradeFut) {
|
|||
}
|
||||
|
||||
tokio::spawn(async move {
|
||||
while USER_MESSAGES.read().await.len() < 2 {
|
||||
while ONLINE_USERS.read().await.len() < 2 {
|
||||
sleep(Duration::from_secs(1)).await;
|
||||
}
|
||||
loop {
|
||||
let mut user_messages = USER_MESSAGES.write().await;
|
||||
let mut user_messages = ONLINE_USERS.write().await;
|
||||
for user_message in user_messages.iter_mut() {
|
||||
if user_message.user != user && user_message.message_receiver.len() > 0 {
|
||||
while let Ok(message) = user_message.message_receiver.recv().await {
|
||||
|
@ -93,6 +93,7 @@ async fn websocket_handler(websocket: UpgradeFut) {
|
|||
.await
|
||||
{
|
||||
eprintln!("Error: WebSocket Send | {}", err_val);
|
||||
break;
|
||||
}
|
||||
if user_message.message_receiver.len() < 1 {
|
||||
break;
|
||||
|
@ -105,7 +106,7 @@ async fn websocket_handler(websocket: UpgradeFut) {
|
|||
});
|
||||
|
||||
while let Ok(received_frame) = websocket_receiver
|
||||
.read_frame::<_, WebSocketError>(&mut move |_| async { unreachable!() })
|
||||
.read_frame::<_, WebSocketError>(&mut move |_| async { Ok(()) })
|
||||
.await
|
||||
{
|
||||
if let OpCode::Text = received_frame.opcode {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue