web-dev-qa-db-ja.com

メッセージのタイムスタンプは、メッセージが送信された時刻にするか、サーバーが受信した時刻にする必要がありますか?

サーバーへの接続がない場合でもメッセージが作成される(そして「送信」キューに入れられる)サービスがあります。接続に成功した後にメッセージがサーバーに送信される場合、「メッセージ送信時刻」は、サーバーがメッセージを受信したとき、またはユーザーによって実際に作成されたときに設定する必要がありますか?

5
Forest Katsch

タイムスタンプをクライアントに判断させることは、悪用される可能性があるようです。ユーザーの時計が正しく設定されていることをどのようにして知っていますか? Gizmodoは Androidデバイスの1.9%は1時間速い であり、無害な理由だけではないと主張しています。

コインドーザーは、古いスタイルのフェア/アーケードゲームとしてスタイルが設定されており、コインをテーブルに押して、他のコインをコレクショントレイにぶつけることができます。ユーザーは有限数のコインから開始し、より多くのコインを獲得してプレイを続けることができ、さらに30秒ごとにコインが生成されます。間違った面から落ちてすべてのコインがなくなった場合、ユーザーはコインが生成されるのを待たなければなりません。これは、アプリを開いたままにしておくことをユーザーに促すための巧妙な手法であり、これにより、クリエイターの広告収入が増加します。

AndroidおよびiOSでチートが発見され、手動でシステムクロックを進めてコインドーザーをだまし、より迅速にコインを獲得しました。 iOSとAndroidの両方のシステム時刻は数字をスクロールすることによって変更されるため、最も速い調整は、時計を1時間、1日、または1分ずつ変更することです。チートは、コインの完全な補数を生成するために、通常1時間または1日を推奨します。

送信されるメッセージが何らかの方法で時間に敏感であるか、ゲームされる可能性があるか、または財務に関係がある場合、サーバーがメッセージを受信した時間にのみ依存できます。メッセージが無害なテキストである場合は、キューに入れられた時間を使用しても安全です。時間は完全に正確ではないことに注意してください。

メールクライアントがメールサーバーに正常に配信されるまで、メッセージが「送信済み」としてカウントされないことに注意してください。

5
cimmanon

「送信時刻」は、サーバーから送信された時刻、つまり実際の送信時刻である必要があると思います。オフラインの場合は、ユーザーが実際にメッセージを送信したことがないため、ユーザーがメッセージを作成して保存した時刻に送信時刻を設定しても意味がありません。

発送が必要なものを購入したときのような感じです。通常、配送業者は、実際にその場所を発送するまで、「パッケージを発送しました」というメッセージを送りません。彼らはあなたの製品を棚から取り出したり、請求書を受け取ったりしても、そのメッセージを送信しませんでした。

2
pcridesagain

「送信時刻」は、受信または処理された時刻ではなく、送信者が送信した時刻を強く示唆しています。

ここでの注意点の1つは、送信ソフトウェアがあなたの制御下にない、またはハッキングされている場合、タイムスタンプをだまして、誰かを不当に利用する可能性があることです。

1
obelia

ハンドオフの時間を示します。クライアントが処理のためにサーバーにメッセージを配信したとき(サーバーがレシピエントにメッセージを取得するのに数秒または数日かかったかどうかは関係ありません)。

あなたが言うことは、電子メールクライアントの送信トレイのように聞こえます。クライアントがキューにメッセージを保持している場合(たとえば、サーバーに送信する前にネットワーク接続または特定の時刻を待機している場合)、そのメッセージは送信されていません。最終的に送信されるタイムスタンプとして「メッセージの入力が終了した時間」を使用しても意味がありません。

インターフェイスでは、保留中のメッセージ(電子メールの送信トレイ)と送信済みメッセージ(電子メールの送信済みアイテム)を明確に区別する必要があります。あなたmayは、保留中/キューに入っている状態で「メッセージの入力が完了した時間」を表示することもできます(または単にタイムスタンプなしで「保留中」を表示します)が、メッセージが処理のためにサーバーに渡されたら、送信時間を必ず表示する必要があります。

tl; dr:送信される時間は、クライアントがその責任を完了したときです。

1
quietmint

送信時間は、サービスが送信キューにメッセージを追加する時間である必要があります。他には何もありません。サーバーのパフォーマンスに問題がある場合は、技術的に解決する必要があります。

また、キューに追加された時間とサーバーの実際の送信時間の時間差も測定する必要があります。この時間が数時間を超える場合は、問題があります。

利用可能なアパートメントの最新情報を受け取るためのキューを想像してみてください。サーバーの時間ルールを許可し、2人のユーザーが同じメッセージを受け取り、タイムスタンプが異なる場合。これらのユーザーが互いに会話すると、混乱が生じ、システムが信頼されなくなります。

サーバーの送信時間ではなく、送信時間を使用します。送信メッセージサーバーのパフォーマンスの問題を解決します。

0
Benny Skogberg