我正在使用通知从服务器发送客户端上的条目,但由于某些问题可能会错过任何通知,这很难跟踪。现在让我们在客户端上输入1,2,3,5,6,8,9,但是在服务器1到9上。由于两个通知导致了一些问题并且无法到达客户端,因此客户端错过了第4条和7.如何确保当客户端下次启动应用程序时,我可以同步条目5和7.一种方法是每次客户端同步,我发送客户端拥有的所有条目但如果数据太大则不是可行的解决方案。
当用户清除他的数据时,我会将完整数据同步到它,这样就可以了。
我如何以复杂的方式处理上述场景?
答案 0 :(得分:3)
我们做的事与@SimonSays的回答类似。要与客户端同步的所有通知或数据片段都有自己的ID和一个标志,指示客户端是否已收到它。
然后,我们在后端提供两种休息方法,一种是客户端用来获取新条目(那些条目未标记为已接收),另一种是客户端通知他收到了哪些ID(如ACK)。客户端没有为每个数据发送ACK。相反,发送一个单独的请求,其中包含已收到的ID列表。
答案 1 :(得分:2)
我认为您的客户端应该能够识别哪些条目丢失,并仅向服务器请求这些条目。如果没有这种现有的方法来识别客户端的缺失条目,那么你应该尽可能实现一个。
其他方式可能是服务器可以通过请求对发送给客户端的通知的确认来跟踪丢失的条目,并再次推送丢失的条目。
答案 2 :(得分:0)
这取决于您的数据。条目是否有时间戳或ID?一种可能性是只发送一个" data_changed"事件作为推送通知。然后客户端将提取新数据。将时间戳,标识或其他内容添加到服务器调用以标识上一个已知条目。然后,服务器发送将发送所有新数据。