Ho visto domande e risposte simili qui, ma la mia situazione è leggermente diversa da quelle. Sto costruendo un'applicazione che offre agli utenti uno spazio infinito per disegnare qualcosa. Lo spazio su tela è aperto a tutti gli utenti e chiunque può disegnare ovunque.
L'utente realizzerà disegni e ogni volta che si modifica qualsiasi pixel, le modifiche vengono memorizzate sul server. Se un utente sovrascrive il disegno di un altro utente, incorrerà in una penalità.
Ora il problema: più utenti possono contestare per lo stesso spazio in cui è aperta la tela. Se l'utente A disegna sul pixel X, qualsiasi altro utente che disegna dopo di lui sul pixel X riceverà una penalità. Ma se più utenti vedono il pixel Y, che è vuoto, tutti possono provare a disegnare qualcosa su quel pixel. Ora se prendo gli aggiornamenti in ordine sequenziale, potrebbe danneggiare gli utenti. Perché, salverò il primo aggiornamento e ogni aggiornamento consecutivo verrà considerato sovrascritto. Ma per gli utenti, il pixel era vuoto.
Una soluzione è controllare l'ora dell'ultimo aggiornamento di un pixel prima di aggiornare e scartare un aggiornamento se il tempo trascorso è inferiore a 2 secondi e fornire agli utenti un messaggio per scartare l'aggiornamento. Ma questo ha due problemi, il controllo rallenta gli aggiornamenti e in secondo luogo, ostacola l'esperienza dell'utente.
Esiste una strategia migliore per gestire questa situazione?