私はグーグルアプリエンジンに取り組んでいます。そして、クライアントから送信された時間とサーバーでの時間の差が15秒未満の場合、私は何かをする必要がある何かに取り組んでいます。テストサーバー(自分のマシン)で試してみると、コードは完全に機能します。しかし、コードがapp-engineにデプロイされると失敗します。サーバーのタイムゾーンが異なる場合、それが発生したときに数時間の加算/減算が行われる可能性があるためだと思います。
私が基本的に行うことは、クライアントにタイムスタンプを他のデータと一緒に送信させることです。その後、サーバーが時差を計算する必要がある場合、クライアントのタイムスタンプからサーバーのタイムスタンプをサブラクトします。
タイムゾーンが異なる場合は、明らかに問題が発生します。
このタイムゾーンの大失敗を回避するための1つの解決策は、サーバーに最初のリクエストとその後の処理の両方にタイムスタンプを付けることですが、私のアプリケーションでは、クライアントがリクエストを行ったときからタイマーが刻々と過ぎ始めることが不可欠です。クライアントに関して15秒が経過した後、サーバーはアクションを実行しません。
私はクライアント側とサーバー側の両方の開発者なので、私が行ったことをお見せすることができます。
クライアント側の呼び出しの例
new Register().sendToServer(username,location,new TimeStamp(new Date().getTime()));
これはデータストアに保存され、いくつかの条件が満たされた場合は少し後で取得されます。
違いを見つけるためのサーバー側のサンプル
Date date= new Timestamp(new Date().getTime());
Date d1 = (Date) timeStampList[i];
long timedif = Math.abs(d1.getTime() - date.getTime());
if(timedif <= 15000)
do something;
else
do something else;
基本的に、私の質問は、タイムゾーンの変動をどのように正規化するかです。
ありがとう