diff options
| author | sigoden <sigoden@gmail.com> | 2024-04-29 23:04:25 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-29 23:04:25 +0800 |
| commit | 4d4a100fe6fcde7ca3afcf7971ac387d355349eb (patch) | |
| tree | 2a43194cb99b4193cbf8e35162bbc8d6660d58b9 /src/client/common.rs | |
| parent | ffb0af8236331c942f19ae7c4c4da38a6d0e8214 (diff) | |
| download | aichat-4d4a100fe6fcde7ca3afcf7971ac387d355349eb.tar.gz | |
refactor: sse handling (#465)
Diffstat (limited to 'src/client/common.rs')
| -rw-r--r-- | src/client/common.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/client/common.rs b/src/client/common.rs index 7eb8be8..9fb0029 100644 --- a/src/client/common.rs +++ b/src/client/common.rs @@ -541,16 +541,26 @@ pub fn maybe_catch_error(data: &Value) -> Result<()> { Ok(()) } +#[derive(Debug)] +pub struct SsMmessage { + pub event: String, + pub data: String, +} + pub async fn sse_stream<F>(builder: RequestBuilder, mut handle: F) -> Result<()> where - F: FnMut(&str) -> Result<bool>, + F: FnMut(SsMmessage) -> Result<bool>, { let mut es = builder.eventsource()?; while let Some(event) = es.next().await { match event { Ok(Event::Open) => {} Ok(Event::Message(message)) => { - if handle(&message.data)? { + let message = SsMmessage { + event: message.event, + data: message.data, + }; + if handle(message)? { break; } } |
