File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 88 TransactionEvent ,
99 YMessageType ,
1010 YSyncMessageType ,
11+ create_awareness_message ,
1112 create_sync_message ,
1213 create_update_message ,
1314 handle_sync_message ,
@@ -51,6 +52,7 @@ def __init__(
5152 self ._ydoc = ydoc
5253 self ._comm = comm
5354 self ._awareness = Awareness (ydoc )
55+ self ._awareness_sub_id = self ._awareness .observe (self ._send_awareness )
5456 msg = create_sync_message (ydoc )
5557 self ._comm .send (buffers = [msg ])
5658 self ._comm .on_msg (self ._receive )
@@ -59,6 +61,12 @@ def __init__(
5961 def awareness (self ) -> Awareness :
6062 return self ._awareness
6163
64+ # send awareness to the frontend
65+ def _send_awareness (self , topic , data ):
66+ update = self ._awareness .encode_awareness_update ([self ._awareness .client_id ])
67+ message = create_awareness_message (update )
68+ self ._comm .send (buffers = [message ])
69+
6270 def _receive (self , msg ):
6371 message = bytes (msg ["buffers" ][0 ])
6472 match message [0 ]:
Original file line number Diff line number Diff line change @@ -42,3 +42,17 @@ async def test_comm_widget_awareness_observe_and_unobserve():
4242 events .clear ()
4343 widget .awareness .set_local_state ({"ping" : 2 })
4444 assert events == []
45+
46+
47+ async def test_comm_provider_sends_awareness_to_frontend (synced_widgets , context ):
48+ async with context :
49+ local_widget = await synced_widgets .get_local_widget ()
50+
51+ sent_messages = []
52+ local_widget ._comm_provider ._comm .send = lambda buffers : sent_messages .append (
53+ buffers [0 ]
54+ )
55+
56+ local_widget .awareness .set_local_state ({"role" : "python-test" })
57+
58+ assert any (msg [0 ] == YMessageType .AWARENESS for msg in sent_messages )
You can’t perform that action at this time.
0 commit comments