use actix_ws::Message;
use futures_util::StreamExt as _;
pub async fn echo_basic_ws(
mut session: actix_ws::Session,
mut msg_stream: actix_ws::MessageStream,
) {
log::info!("connected");
let close_reason = loop {
match msg_stream.next().await {
Some(Ok(msg)) => {
log::debug!("msg: {msg:?}");
match msg {
Message::Text(text) => {
session.text(text).await.unwrap();
}
Message::Binary(bin) => {
session.binary(bin).await.unwrap();
}
Message::Close(reason) => {
break reason;
}
Message::Ping(bytes) => {
let _ = session.pong(&bytes).await;
}
Message::Pong(_) => {}
Message::Continuation(_) => {
log::warn!("no support for continuation frames");
}
Message::Nop => {}
};
}
_ => break None,
}
};
let _ = session.close(close_reason).await;
log::info!("disconnected");
}