リアルタイム通信の手法、ポーリングより効率的にデータの変更などを確認できる
https://penpen-dev.com/blog/realtime-commu/
-
クライアントがサーバーに変更の有無を問い合わせるリクエストを発行
- (ロングではない普通の)ポーリングであれば、この時点でサーバーは「変更はありません」と返す
-
サーバーはリクエストを受け取り、データの差分を確認する(?)
- クライアントが自身のデータを送り、サーバー側で差分を確認する?
- クライアントごとに「このデータを送っていない」みたいなものを保存している?
- ジョブキューみたいな?
-
差分がなければ、変更されるまで待機
-
データが変更されたら、サーバーはリクエストに対してレスポンスを返し、差分を更新する
-
クライアントはレスポンスを受け取った直後にリクエストを送る
- サーバーはまた変更があるまで待機
-
クライアントがレスポンスを受け取り損ねたら?
- サーバーはレスポンスの送信に失敗するため、差分の更新を行わない
- クライアントは復帰直後にリクエストを送る
-
クライアントはデータAを持っている→サーバーにリクエスト→サーバーはリクエストを受け取って待機→データがABになったので、差分Bをレスポンスとして返す
-
データABを持ったクライアントがリクエスト→クライアントがスリープになる→データがABCになり、サーバーが差分Cをレスポンスとして返す(レスポンスに失敗する)→クライアントが復帰し、すぐにリクエストを送る→すでに差分Cがあるから、これをレスポンスとして返す