diff options
Diffstat (limited to 'src/reader.rs')
-rw-r--r-- | src/reader.rs | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/reader.rs b/src/reader.rs index 62b4e08..751ee1d 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -133,21 +133,19 @@ impl WebSocketOnMessageRead { #[cfg(target_arch = "wasm32")] impl Readable for WebSocketOnMessageRead { async fn read_buf(&mut self, buffer: &mut Buffer) -> Result<usize> { - let mut queue = Vec::new(); - self.queue.recv_many(&mut queue, 10).await; - let mut bytes = 0; - for msg in queue { - match msg { - WsMessage::Text(s) => { - let text = s.as_bytes(); - bytes += buffer.write(text)?; - } - WsMessage::Binary(v) => { - bytes += buffer.write(&v)?; - } + debug!("reading buf"); + let msg = self.queue.recv().await; + let msg = match msg { + Some(msg) => msg, + None => return Err(Error::WebSocketClosed), + }; + match msg { + WsMessage::Text(s) => { + let text = s.as_bytes(); + Ok(buffer.write(text)?) } + WsMessage::Binary(v) => Ok(buffer.write(&v)?), } - Ok(bytes) } } |