• ベストアンサー

共有お絵かきシステムの同期の取り方について

現在、共有ホワイトボードになるものを作っています。 今は以下のような方法で同期をとろうとしています。 クライアントからサーバへはソケットで接続し、サーバ側で接続があれば別スレッドで入力を待ち続けます。 スレッドを新しく走らせる時点でクライアントのソケットに対するOutputStreamを配列に入れ、複数のクライアントの出力先の管理をします。 各スレッド毎に入力(描画情報)があると、上記のOutputStreamの配列に対してその要素数分だけfor文をまわし、受け取った情報を接続中のクライアントに出力する。 といった同期の取り方をしています。 しかし、各クライアントからの描画情報はとても多く、クライアントが3人以上になるとすぐに固まってしまったり、クライアント側で情報がごちゃごちゃになり期待通りの描画がされなかったりといったことになります。 共有ホワイトボード等でお絵かき情報の同期の取り方について何か良い考え方はありませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • luckymako
  • ベストアンサー率55% (29/52)
回答No.1

ユーザが描いた軌跡データの間引きや、簡単化をすることで負荷を減らすことができませんか? 例えば... ・サンプリング間隔を長くする ・変化量が一定量を下回る場合には間引く ・スプライン曲線などを用いて近似する など?

YOKO-45
質問者

お礼

luckymako様 ありがとうございます。 クライアント側の描画情報の取得&送信処理は別の人が担当しているので、一度提案してみます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

全貌も細部もよく見えませんが、基本的に、クライアント制御の部分がない、より広義に言えば、このネットワークアプリケーションにはアプリケーションプロトコル(とその設計)が不在、という感じを受けます。

YOKO-45
質問者

お礼

ranco様 まだまだ初心者で投稿内容にも不十分な点が多かったかと思いすが、ご指摘ありがとうございます。 また、アプリケーションの設計等も初めての試みなので、確かにご指摘の通り設計段階での粗が目立っていると感じています。

すると、全ての回答が全文表示されます。

関連するQ&A