Reactive "connected" property
Sjoerd82 opened this issue · 6 comments
Checklist
[X] Are you reporting a bug? Use github issues for bug reports and feature requests. For general questions, please use https://discuss.yjs.dev/
[X] Try to report your issue in the correct repository. Yjs consists of many modules. When in doubt, report it to https://github.com/yjs/yjs/issues/
Is your feature request related to a problem? Please describe.
No
Describe the solution you'd like
On my GUI I'm showing a "connected"/"disconnected" icon. However, the connected property is not reactive.
It would be nice to expose the connected property as an event, or make it otherwise reactive.
I see that an "Observable" class is used, I am not familiar with it. Could it be that SyncedStore already makes this reactive?
Describe alternatives you've considered
I have no (good) alternative ideas.
Additional context
Related:
https://discuss.yjs.dev/t/vue3-syncedstore-reactivity/1683
same here, how to make things reactive?
The concept of "connected" is not well defined in y-webrtc. In y-websocket, we can say that we are connected to the server. But in y-webrtc, there are many different kinds of endpoints we are connected to.
I assume you are interested in whether you are connected to other peers? Then you could listen to the peers
event (it is mentioned in the discussion you mentioned) and update a local variable whenever it is changed.
Observable
is a simple class that enabled you to listen to events: instance.on('event', function)
. Yjs & y-webrtc are not reactive.
That sounds about right. There is no distinction between a "remote" peer and a peer that is hosted on the same computer. Maybe you want to use y-websocket instead?
I am trying to use both at same time, y-websocket and y-webrtc with a common awareness, will this approach have any issues?
Sounds like overkill. But sure, that should work. You can mash yjs-providers however you want. But since there is unnecessary computational overhead you should probably only choose one of them. From what I hear, you want a "connected" event - indicating when you received the "latest state". That really only exist when you use y-websocket. There is no way to know when you synced with all y-webrtc peers (you don't know how many there are - because it's p2p).