Handle server stopping message

OBS websocket sends a "ServerStopping" message when the websocket is closed.
Because this isn't in JSON it turns into a DeserializeMessage error.
This commit is contained in:
Brian Spit 2021-03-07 05:54:46 +01:00
parent 2a94ee3cda
commit bece4b3ac0
2 changed files with 9 additions and 0 deletions

View file

@ -172,6 +172,13 @@ impl Client {
trace!("{}", msg); trace!("{}", msg);
let res: Result<(), InnerError> = async { let res: Result<(), InnerError> = async {
let text = msg.into_text().map_err(InnerError::IntoText)?; let text = msg.into_text().map_err(InnerError::IntoText)?;
let text = if text == "Server stopping" {
debug!("Websocket server is stopping");
r#"{"update-type": "ServerStopping"}"#.to_string()
} else {
text
};
let json = serde_json::from_str::<serde_json::Value>(&text) let json = serde_json::from_str::<serde_json::Value>(&text)
.map_err(InnerError::DeserializeMessage)?; .map_err(InnerError::DeserializeMessage)?;

View file

@ -575,6 +575,8 @@ pub enum EventType {
/// The new enabled state of Studio Mode. /// The new enabled state of Studio Mode.
new_state: bool, new_state: bool,
}, },
/// WebSocket server is stopping.
ServerStopping,
/// Fallback value for any unknown event type. /// Fallback value for any unknown event type.
#[serde(other)] #[serde(other)]
Unknown, Unknown,