2016-09-03 3 views
0

У меня есть приложение для чата. У меня есть две машины A & B. A отправить сообщение в 19:10 (в свое время) B получить сообщение в 19:12 (в свое время) На сервере я храню время (собственное время сервера не любое время клиента) как Long JAVA тип данных.Как синхронизировать время между двумя разными машинами

Проблема в том, что я получаю чат-журнал непосредственно с сервера, его порядок верен, поскольку все сообщения имеют собственное время сервера.

Но в случае, если A посылает сообщение непосредственно B-заказу, не является надлежащим значением времени несоответствия.

стороны клиента JS & стороны сервера JAVA

Вот что это такое:

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

Теперь, если я закажу сообщение на B не будет в правильном порядке, как вы можете видеть. В следующий раз, когда я выберу с сервера, он покажет 7:11 вечера и разницу времени между B & Время сервера будет 3 мин.

ответ

0

Просто отправьте серверное время клиенту, если он входит в систему. Затем вычислите разницу между временем клиента и используйте это как смещение в журналах.

Вы также можете отправить серверное время каждое сообщение, но я не думаю, что это необходимо для приложения чата

Так что, если хочет, чтобы начать чат, он будет подписан на сервер и получаю ответ который также содержит время сервера. Say A находится в 9:30 и сервер находится в 9.33am. Сервер отвечает 9:30 утра, а А знает, что на 3 минуты вперед. Затем он может исправить это время журналов.

То же самое относится к B. Если A отправляет сообщение в B, он также может отправлять серверное время, потому что через 3 минуты это время.

+0

Не могли бы вы разработать. Я также обновил свой вопрос, посмотрю – manish

Смежные вопросы