Stream real-time position quotes via tick-driven SSE with incremental UI updates.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-29 21:14:41 +08:00
parent 94c566fbe5
commit df79017b30
4 changed files with 148 additions and 8 deletions
+9 -2
View File
@@ -50,8 +50,7 @@ class PositionStreamHub:
self._snapshot = dict(data)
self._snapshot_ts = time.time()
def broadcast(self, event: str, data: dict) -> None:
self.set_snapshot(data)
def _fanout(self, event: str, data: dict) -> None:
msg = {"event": event, "data": data}
with self._lock:
subs = list(self._subs)
@@ -68,6 +67,14 @@ class PositionStreamHub:
except queue.Full:
pass
def broadcast(self, event: str, data: dict) -> None:
self.set_snapshot(data)
self._fanout(event, data)
def push_event(self, event: str, data: dict) -> None:
"""SSE 推送,不覆盖 positions 全量快照。"""
self._fanout(event, data)
position_hub = PositionStreamHub()