2016-09-03 17 views
0

私はチャットアプリケーションを持っています。私は2台のマシンを持っています& B A午後7時10分(独自の時間)にメッセージを送信 Bは午後7時12分(自分の時間)にメッセージを受信 私は時間を保存しています任意のクライアント時間)Long JAVAデータ型。2台の異なるマシン間で時刻を同期する方法

問題は、サーバーから直接チャットログを取得しているときに、すべてのメッセージがサーバーの独自の時間を持つため、その順序が正しいことです。

しかし、AがB注文に直接メッセージを送信する場合、時間の不一致が適切ではありません。

クライアント側は、JS &サーバ側である。ここJAVA

で、それがどのようなものであるかである:私はBにメッセージを注文した場合、あなたが見ることができるよう

A (7:10 PM) -----toServer ----> Server (Store message at 7:11PM) 
| 
+------- directly to B --> B receives message (Its own time is 7:08 PM) 

は、今では正しい順序ではありません。次回は、サーバーからフェッチすると、7:11 PMとBとの時間差が表示されます。サーバー時間は3分になります。

答えて

0

クライアントがログインしている場合は、サーバ時間をクライアントに送信してください。クライアント時間とログのオフセットをクライアント時間の差として計算してください。

また、サーバーの時間に各メッセージを送ることができますが、私はそれがチャットアプリケーションAがチャットを開始したい場合、彼はサーバーにサインインしますので

のために必要だと思うし、応答を取得していませんそれにはサーバ時間も含まれています。 Aは9.30am、サーバは9.33amです。サーバーは9.30amで応答し、Aは3分先にあることを知っています。その後、ログの時刻を修正することができます。

同じことがBにも当てはまります。AがBにメッセージを送信すると、その時刻の3分後にサーバー時刻も送信できます。

+0

詳細を教えてください。私はまた、私の質問を更新して見ている – manish