websocket: automatically reconnect if not heard from for a while
This commit is contained in:
@@ -1,7 +1,13 @@
|
||||
use crate::model::{Conversation, Message, UpdateItem};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum Event {
|
||||
pub struct Event {
|
||||
pub data: EventData,
|
||||
pub update_seq: u64,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum EventData {
|
||||
ConversationChanged(Conversation),
|
||||
MessageReceived(Conversation, Message),
|
||||
}
|
||||
@@ -9,8 +15,12 @@ pub enum Event {
|
||||
impl From<UpdateItem> for Event {
|
||||
fn from(update: UpdateItem) -> Self {
|
||||
match update {
|
||||
UpdateItem { conversation: Some(conversation), message: None, .. } => Event::ConversationChanged(conversation),
|
||||
UpdateItem { conversation: Some(conversation), message: Some(message), .. } => Event::MessageReceived(conversation, message),
|
||||
UpdateItem { conversation: Some(conversation), message: None, .. }
|
||||
=> Event { data: EventData::ConversationChanged(conversation), update_seq: update.seq },
|
||||
|
||||
UpdateItem { conversation: Some(conversation), message: Some(message), .. }
|
||||
=> Event { data: EventData::MessageReceived(conversation, message), update_seq: update.seq },
|
||||
|
||||
_ => panic!("Invalid update item: {:?}", update),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user