text icon indicating copy to clipboard operation
text copied to clipboard

y-http provider to replace y-websocket and websocket polyfill

Open max-nextcloud opened this issue 7 months ago • 0 comments

Is your feature request related to a problem? Please describe. The yjs provider that syncs with the server is way to complex

Describe the solution you'd like Have a y-http provider that takes care of the syncing and can handle being online / offline well.

y-http

  • [x] open connection
  • [x] expose connection
  • [x] basic syncing
  • [x] basic awareness messages
  • [x] include url in connection
  • [x] expect client to know params to open
  • [x] use ydoc client id in open
  • [x] handle awareness queries (without sending them)
  • [x] delay test requests
  • [x] ensure awareness messages are send at least every 10 seconds
  • [x] return only newer messages in DummyServer
  • [x] hand version to sync request
  • [x] ensure old awareness states are cleared after 30 seconds
  • [x] implement closing the connection
  • [x] test reopening the connection

embedding in text js

  • [x] implement client to instantiate y-http with
  • [ ] extract api calls from Sync service and use connection instead
  • [ ] extract document flags such as hasOwner from sync service and use them
  • [ ] implement events in y-http provider and handle them instead of sync service events

server side

  • [ ] allow flagging updates as full compressed history
  • [ ] at most send all versions since last compressed one
  • [ ] clean up older versions

later

  • [ ] process queries
  • [ ] send query message with every request
  • [ ] send compressed history
  • [ ] make the api stateless, removing the need for connection
  • [ ] reset remote doc when receiving compressed history
  • [ ] detect out of sync and reconnect (effectively receiving compressed history and all steps since then)
  • [ ] handle sync queries (without sending them)

max-nextcloud avatar Jun 03 '25 10:06 max-nextcloud