Jelajahi Sumber

signal end of stream with None instead of b''

Rodja Trappe 1 tahun lalu
induk
melakukan
720e13eb3d
1 mengubah file dengan 10 tambahan dan 7 penghapusan
  1. 10 7
      nicegui/air.py

+ 10 - 7
nicegui/air.py

@@ -86,16 +86,18 @@ class Air:
             }
 
         @self.relay.on('read-stream')
-        async def _handle_read_stream(stream_id: str) -> bytes:
-            async for chunk in self.streams[stream_id].data:
-                return chunk
-            await _handle_close_stream(stream_id)
-            return b''
+        async def _handle_read_stream(stream_id: str) -> Optional[bytes]:
+            try:
+                return await self.streams[stream_id].data.__anext__()
+            except StopAsyncIteration:
+                await _handle_close_stream(stream_id)
+                return None
+            except Exception:
+                await _handle_close_stream(stream_id)
+                raise
 
         @self.relay.on('close-stream')
         async def _handle_close_stream(stream_id: str) -> None:
-            return
-            ic()
             await self.streams[stream_id].response.aclose()
             del self.streams[stream_id]
 
@@ -221,5 +223,6 @@ def connect() -> None:
 
 def disconnect() -> None:
     """Disconnect from the NiceGUI On Air server if there is an air instance."""
+    ic()
     if instance:
         background_tasks.create(instance.disconnect())