アプリケーションで SignalR を使用して、グループ内のさまざまなユーザーにメッセージを送信しています。
メッセージを追加/編集または削除できる機能があり、同じアクションが SignalR ハブを介してそのグループ内のすべてのユーザーに送信されます。
すべて正常に動作しています。
問題は、接続が失われた/インターネットが切断された、またはラップトップ/マシンがオフになっている間に発生した他の人のアクション (メッセージの追加/編集/削除) を見逃す可能性があることです。
接続を回復するか、ラップトップを再度開いた後、ユーザーは、オフライン中に発生した見逃したメッセージ、見逃したアクションをすべて受信する必要があります。
すべてのユーザーのすべてのクライアント (クライアント ID) をデータベースに保存しています。
誰かがそれを行う方法を教えてもらえますか?
解決策の 1 つは、最後のメッセージ ID (ui に到達した) をサーバーにポーリングして、新しいメッセージがあるかどうかを確認することですが、メッセージが他のユーザーからサーバーで編集/削除された可能性があるため、目的を果たしません。
私はすでに次のリンクを通過しました
SignalR メッセージの損失はサーバー側で検出できますか?
SignalR でメッセージ配信を保証するにはどうすればよいですか?
再接続時に欠落したメッセージを取得する Signalr クライアント
https://github.com/JabbR/JabbR/issues/699
しかし、ユーザーがオフラインであった間に発生した履歴全体の側面をカバーしているものはありません。
たとえば、Skype で切断され、数時間後に戻ってきた場合、その間に発生したすべてのアクション (メッセージの追加/編集/削除) のすべての履歴が取得され、エンド ユーザーに更新されます。