我们构建了一个聊天网络应用程序,用户第一次从 API 获取数据,然后使用这些 API 将数据发送回服务器,并且我们使用 websocket 来处理新数据(新消息和其他内容)。
今天,我们的一位用户告诉我们,新消息列表中显示的消息数量错误,经过几个小时的调查,我发现用户的系统时间错误(与我们的服务器时间相差大约 3 分钟)。
在我们的应用中,我们检查用户是否打开了该对话,然后将当前时间发送回服务器(来自 javascript new Date()
)。
我不希望用户丢失任何新消息,即使他们将该对话标记为已读并且在标记过程中新消息到达,如果我从服务器设置时间,他们将丢失该新消息,如果我使用浏览器时间与我们的服务器不完全匹配。
我真的不知道处理这个案例是否重要,以及其他应用程序是否处理这个案例,如果处理这个案例如何?
非常感谢您的每一点帮助
编辑
我不想在每个请求上发送用户检查时间,因此我们的应用程序会在用户与应用程序交互后 10 秒发送服务器检查时间(标记为已读)。
最佳答案
使用服务器生成的 Last-Event-ID 等内容发送消息。
并决定您应该发送哪条消息。不仅仅是用户时间。
关于javascript - 如何从用户那里获取可靠的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28001438/