我有一个聊天应用程序。我有两台机器A和B。A在7:10 PM (自己的时间)发送消息B在7:12 PM (自己的时间)接收A消息我在服务器中存储时间(服务器自己的时间,而不是任何客户端时间)作为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 be,B和服务器之间的时间差异将是3分钟。
发布于 2016-09-03 22:10:04
如果客户端登录,只需将服务器时间发送给客户端即可。然后计算客户端时间之间的差异,并将其用作日志中的偏移量。
您还可以向服务器发送每条消息的时间,但我不认为这对于聊天应用程序是必要的
因此,如果A想要开始聊天,他将登录到服务器,并得到一个响应,其中也包含服务器时间。假设A在上午9:30,服务器在上午9:33。服务器在上午9:30响应,A知道它提前了3分钟。然后它可以校正它的日志时间。
B也是如此。如果A向B发送消息,它也可以发送服务器时间,因为它比A时间晚3分钟。
https://stackoverflow.com/questions/39307805
复制相似问题