What do I do when my backend is not in sync anymore with what the user sees on the UI?

The Problem

  • I have a live data feed
  • Users load 50 items on the home page and click load more to scroll infnitely
  • As new data comes in every minute, I also push this new data to each user via websockets
  • The user could be disconnected temporarily and they would miss a few updates and then they could reconnect in which case they would be OUT of SYNC with the backend
  • The way I thought I would fix this problem is to get the timestamp of the last item they have on their UI
  • Whenever the connection opens, I would send ALL the items from that timestamp till current time to each user
  • There is however a risk here
  • My server could be down for maintenance for a few hours when doing upgrades and on connecting back I would have to send 10000s of items to each user potentially causing the server to crash
  • The remedy that I thought of is to keep a time limit say 4 hours, if it has been more than 4 hours since the last item the user has on their UI, I would reset the UI completely

So the question is, how do I deal with this?

  1. Dont do anything, let there be that risk of server crash
  2. Clear the user s UI completely without asking the user even if they scrolled down 1000 items on their screen
  3. Keep a limit of say 50 items or so and send those 50 items, if it has been more than 4 hours, tell the user they may be out of sync and they need to refresh the page
  4. Any suggestions?