複数のユーザーが同じホワイトボードを表示して描画できる、楽しみのためにオンライン ホワイトボード アプリケーションを作成しています。私は websockets (フロントエンドにバニラ JS、バックエンドに Scala) を使用しています。現在、基本的には、あるユーザーから残りのユーザーにマウス イベントをブロードキャストし、画像をクライアント側でレンダリングしています。
ただし、これにより一時的な共有状態が発生しますが、ユーザーがいつでもホップして、保存された共有状態を確認できるようにしたいと考えています。これには、おそらくバックエンドとフロントエンドでレンダリング コードを共有する必要があると考えています。これにより、クライアントはストリーミング時にイベントをレンダリングしますが、クライアントが関連付けられたときにサーバーは生の画像データを送信できます。
ここで私の質問は次のとおりです。この種のプロジェクトで知っておくべき他の設計パターンは何ですか? これは楽しみ/学習プロジェクトであるため、これは自由回答形式の質問ですが、この種のデータ フローに関するいくつかの有用な参照を含む回答を受け入れます。