12

ネットワーク接続が数秒間切断され、SignalRサーバーからプッシュされたメッセージが見当たらないとします。

ネットワーク接続を回復すると、見逃したメッセージは失われますか?または、signalRがそれらを処理し、再接続時に押し出しますか?

見逃したメッセージを処理できない場合、一貫性を確保するために推奨されるアプローチは何ですか?

  • サーバーデータをチェックするために定期的に(2〜3分)ポーリングしますか?
  • どういうわけか、クライアント側でネットワークの損失を検出し、ネットワーク復元に関するデータを取得するためにajax呼び出しを実行しますか?
  • 他に何かありますか?
4

1 に答える 1

11

ここにいくつかの考えがあります:

1秒間に大量のメッセージを送信しない場合は、メッセージ自体にデータを送信しないことを検討してください。代わりに、メッセージはクライアントへの単なる「ping」であり、可能な場合はサーバーデータを取得するように指示します。あなたが言ったように、それを定期的な投票と組み合わせると、メッセージを見逃すことはありません。彼らはただ遅れるかもしれません。

大量のメッセージをすばやく送信する場合は、それぞれにシーケンシャルIDを追加してみてはどうでしょうか。SQLID列について考えてみてください。クライアントは、受信した最新のIDを追跡する必要があります。ネットワークの再接続後、クライアントは[LastID]以降のすべてのメッセージを要求できます。IDが最後に受信したものと隣接していないメッセージを受信した場合は、切断があったことがわかり、サーバーに不足している情報を要求できます。

于 2012-04-26T13:04:28.290 に答える