2

複数のユーザーが同じホワイトボードを表示して描画できる、楽しみのためにオンライン ホワイトボード アプリケーションを作成しています。私は websockets (フロントエンドにバニラ JS、バックエンドに Scala) を使用しています。現在、基本的には、あるユーザーから残りのユーザーにマウス イベントをブロードキャストし、画像をクライアント側でレンダリングしています。

ただし、これにより一時的な共有状態が発生しますが、ユーザーがいつでもホップして、保存された共有状態を確認できるようにしたいと考えています。これには、おそらくバックエンドとフロントエンドでレンダリング コードを共有する必要があると考えています。これにより、クライアントはストリーミング時にイベントをレンダリングしますが、クライアントが関連付けられたときにサーバーは生の画像データを送信できます。

ここで私の質問は次のとおりです。この種のプロジェクトで知っておくべき他の設計パターンは何ですか? これは楽しみ/学習プロジェクトであるため、これは自由回答形式の質問ですが、この種のデータ フローに関するいくつかの有用な参照を含む回答を受け入れます。

4

1 に答える 1

3

ここで私の質問は次のとおりです。この種のプロジェクトで知っておくべき他の設計パターンは何ですか?

サーバー上にレンダリング コードを配置する必要はありません。現在のホワイトボードにつながった蓄積されたすべてのイベントを保存し、それらを新しいクライアントに送信して、すべてのイベントが最初に発生したときに聞いていたかのように、新しいクライアントにホワイトボードをレンダリングさせることができます。

それが実際よりも多くのデータである場合は、未加工のイベントを圧縮できます。たとえば、直線またはほぼ直線のセグメントは、介在するすべてのマウス位置を必要とせず、セグメントの最初と最後の位置だけが必要です。

于 2016-08-17T16:49:00.833 に答える