- Notifications
You must be signed in to change notification settings - Fork22
WebSocket Connector for Ypy
License
y-crdt/ypy-websocket
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Ypy-websocket is an async WebSocket connector forYpy.
Documentation:https://davidbrochart.github.io/ypy-websocket
Source Code:https://github.com/y-crdt/ypy-websocket
Ypy-websocket is a Python library for building WebSocket servers and clients that connect and synchronize shared documents.It can be used to create collaborative web applications.
The following diagram illustrates a typical architecture. The goal is to share a document among several clients.
Each client has an instance of aYDoc, representing their view of a document. A shared document also lives in aroom on the server side. Conceptually, a room can be seen as the place where clients collaborate on a document. The WebSocket to which a client connects points to the corresponding room through the endpoint path. In the example below, clients A and B connect to a WebSocket at pathroom-1
, and thus both clients find themselves in a room calledroom-1
. All theYDoc
synchronization logic is taken care of by theWebsocketProvider.
Each update to a shared document can be persisted to disk using astore, which can be a file or a database.
flowchart TD classDef room1 fill:#f96 classDef room2 fill:#bbf A[Client A<br>room-1]:::room1 <-->|WebSocket<br>Provider| server(WebSocket Server) B[Client B<br>room-1]:::room1 <-->|WebSocket<br>Provider| server C[Client C<br>room-2]:::room2 <-->|WebSocket<br>Provider| server D[Client D<br>room-2]:::room2 <-->|WebSocket<br>Provider| server server <--> room1((room-1<br>clients: A, B)):::room1 server <--> room2((room-2<br>clients: C, D)):::room2 A <-..-> room1 B <-..-> room1 C <-..-> room2 D <-..-> room2 room1 ---> store1[(Store)] room2 ---> store2[(Store)]