ws: don't close connection when receiving ping message

This commit is contained in:
Joakim Frostegård 2023-01-10 15:10:18 +01:00
parent 8cab0297a1
commit 5ed876f934

View file

@ -463,6 +463,8 @@ impl<S: futures::AsyncRead + futures::AsyncWrite + Unpin> ConnectionReader<S> {
.await .await
.ok_or_else(|| anyhow::anyhow!("Stream ended"))??; .ok_or_else(|| anyhow::anyhow!("Stream ended"))??;
match &message {
tungstenite::Message::Text(_) | tungstenite::Message::Binary(_) => {
match InMessage::from_ws_message(message) { match InMessage::from_ws_message(message) {
Ok(in_message) => { Ok(in_message) => {
self.handle_in_message(in_message).await?; self.handle_in_message(in_message).await?;
@ -474,6 +476,23 @@ impl<S: futures::AsyncRead + futures::AsyncWrite + Unpin> ConnectionReader<S> {
.await?; .await?;
} }
} }
}
tungstenite::Message::Ping(_) => {
::log::trace!("Received ping message");
// tungstenite sends a pong response by itself
}
tungstenite::Message::Pong(_) => {
::log::trace!("Received pong message");
}
tungstenite::Message::Close(_) => {
::log::debug!("Client sent close frame");
break Ok(());
}
tungstenite::Message::Frame(_) => {
::log::warn!("Read raw websocket frame, this should not happen");
}
}
yield_if_needed().await; yield_if_needed().await;
} }