|
25 | 25 | import idom |
26 | 26 | from idom.config import IDOM_CLIENT_BUILD_DIR, IDOM_DEBUG_MODE |
27 | 27 | from idom.core.component import AbstractComponent, ComponentConstructor |
28 | | -from idom.core.dispatcher import RecvCoroutine, SendCoroutine, dispatch_single_view |
| 28 | +from idom.core.dispatcher import dispatch_single_view |
29 | 29 | from idom.core.layout import LayoutEvent, LayoutUpdate |
30 | 30 |
|
31 | 31 | from .utils import threaded, wait_on_event |
@@ -159,22 +159,17 @@ def _setup_single_view_dispatcher_route( |
159 | 159 |
|
160 | 160 | @sockets.route(_join_url_paths(config["url_prefix"], "/stream")) # type: ignore |
161 | 161 | def model_stream(ws: WebSocket) -> None: |
162 | | - send, recv = _make_send_recv_callbacks(ws) |
163 | | - dispatch_single_view_in_thread(constructor(**_get_query_params(ws)), send, recv) |
164 | | - |
| 162 | + def send(value: Any) -> None: |
| 163 | + ws.send(json.dumps(value)) |
165 | 164 |
|
166 | | -def _make_send_recv_callbacks(ws: WebSocket) -> Tuple[SendCoroutine, RecvCoroutine]: |
167 | | - def send(value: Any) -> None: |
168 | | - ws.send(json.dumps(value)) |
| 165 | + def recv() -> Optional[LayoutEvent]: |
| 166 | + event = ws.receive() |
| 167 | + if event is not None: |
| 168 | + return LayoutEvent(**json.loads(event)) |
| 169 | + else: |
| 170 | + return None |
169 | 171 |
|
170 | | - def recv() -> Optional[LayoutEvent]: |
171 | | - event = ws.receive() |
172 | | - if event is not None: |
173 | | - return LayoutEvent(**json.loads(event)) |
174 | | - else: |
175 | | - return None |
176 | | - |
177 | | - return send, recv |
| 172 | + dispatch_single_view_in_thread(constructor(**_get_query_params(ws)), send, recv) |
178 | 173 |
|
179 | 174 |
|
180 | 175 | def _get_query_params(ws: WebSocket) -> Dict[str, Any]: |
|
0 commit comments