yeah
This commit is contained in:
parent
5ca0c8250f
commit
63571c1bfa
1 changed files with 5 additions and 2 deletions
|
@ -39,6 +39,7 @@ pub async fn websocket_on_connection(stream: WebSocket, state: Arc<AppState>, ad
|
||||||
// Split channels to send and receive asynchronously.
|
// Split channels to send and receive asynchronously.
|
||||||
let (mut sender, mut receiver) = stream.split();
|
let (mut sender, mut receiver) = stream.split();
|
||||||
|
|
||||||
|
// Create channel for direct messages
|
||||||
let (dm_tx, mut dm_rx) = mpsc::channel(30);
|
let (dm_tx, mut dm_rx) = mpsc::channel(30);
|
||||||
|
|
||||||
let _ = state
|
let _ = state
|
||||||
|
@ -55,13 +56,15 @@ pub async fn websocket_on_connection(stream: WebSocket, state: Arc<AppState>, ad
|
||||||
// Send messages to this client
|
// Send messages to this client
|
||||||
let mut send_task = tokio::spawn(async move {
|
let mut send_task = tokio::spawn(async move {
|
||||||
loop {
|
loop {
|
||||||
|
// Global broadcast channel
|
||||||
while let Ok(msg) = rx.recv().await {
|
while let Ok(msg) = rx.recv().await {
|
||||||
if sender.send(Message::Text(msg)).await.is_err() {
|
if sender.send(Message::Text(msg)).await.is_err() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while let Some(message) = dm_rx.recv().await {
|
// Direct message channel
|
||||||
if sender.send(message).await.is_err() {
|
while let Some(msg) = dm_rx.recv().await {
|
||||||
|
if sender.send(msg).await.is_err() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue