リアルタイム通信の手法、ポーリングより効率的にデータの変更などを確認できる
https://penpen-dev.com/blog/realtime-commu/

  • クライアントがサーバーに変更の有無を問い合わせるリクエストを発行

    • (ロングではない普通の)ポーリングであれば、この時点でサーバーは「変更はありません」と返す
  • サーバーはリクエストを受け取り、データの差分を確認する(?)

    • クライアントが自身のデータを送り、サーバー側で差分を確認する?
    • クライアントごとに「このデータを送っていない」みたいなものを保存している?
      • ジョブキューみたいな?
  • 差分がなければ、変更されるまで待機

  • データが変更されたら、サーバーはリクエストに対してレスポンスを返し、差分を更新する

  • クライアントはレスポンスを受け取った直後にリクエストを送る

    • サーバーはまた変更があるまで待機
  • クライアントがレスポンスを受け取り損ねたら?

    • サーバーはレスポンスの送信に失敗するため、差分の更新を行わない
    • クライアントは復帰直後にリクエストを送る
  • クライアントはデータAを持っている→サーバーにリクエスト→サーバーはリクエストを受け取って待機→データがABになったので、差分Bをレスポンスとして返す

  • データABを持ったクライアントがリクエスト→クライアントがスリープになる→データがABCになり、サーバーが差分Cをレスポンスとして返す(レスポンスに失敗する)→クライアントが復帰し、すぐにリクエストを送る→すでに差分Cがあるから、これをレスポンスとして返す