Questa domanda probabilmente non ha una risposta. Ma, pensavo di fare un tentativo. Ho scritto una grande applicazione a una pagina. All'avvio dell'applicazione, la scheda aperta "registra" sé stessa con il server, che memorizza come una scheda "attiva".Riconoscere quale scheda ha effettuato la richiesta
Se l'utente A modifica XYZ nell'area di lavoro, ogni scheda aperta su quell'area di lavoro, da qualsiasi utente, riceve una notifica che XYZ è stato modificato. Ciò innesca una ricarica nei client, che verrà magicamente aggiornata. Al momento, lo sto facendo sondando. Tuttavia, quando tutto funziona, posso usare cose come WS o Socket.io per rendere le cose ancora più veloci.
PROBLEMA: ogni scheda riceve la notifica. Anche la scheda che l'ha istigata in primo luogo! (di conseguenza, una schermata già aggiornata viene aggiornata)
In qualche modo ho bisogno del server per conoscere l'ID della scheda della scheda che effettua la richiesta. Ricorda che un utente potrebbe avere 5 schede aperte: se cambiano XYZ, tutte le schede dovrebbero ricevere la notifica, TRANNE quella che l'ha effettivamente attivata!
Al momento, sto passando l'ID dell'area di lavoro per ogni richiesta Ajax (un utente potrebbe essere connesso e avere accesso a più aree di lavoro contemporaneamente).
- Soluzione 1: aggiungere due ID di lavoro e scheda ID per ogni richiesta
- Soluzione 2: utilizzare solo la scheda ID per ogni richiesta. L'app elabora l'ID dell'area di lavoro dal tabID (che conosce a quale area di lavoro appartiene)
- Soluzione 3: ????? (Qualcosa che mi manca?)
Qualche idea?
Non vedo alcun problema con soluzione 1 o soluzione 2. Per la soluzione 1 le richieste di ajax sarebbero la cosa che richiede più tempo, l'invio di un valore aggiuntivo non farebbe molta differenza. Anche la soluzione 2 va bene, interpreterete i dati inviati sul server. Personalmente, vorrei andare con la soluzione 2. Vorrei anche assicurarvi di proteggere le vostre richieste Ajax (probabilmente un ID di tabulazione cifrata e una chiave segreta) e confrontarlo sul lato server una volta inviata la richiesta –
Il problema con la Soluzione 2 è che un La chiamata Ajax effettuata da una scheda "scaduta" avrà esito negativo poiché la scheda non è più attiva. Questo ha effetti collaterali "interessanti" (vedi: sospendi il tuo PC, aprilo di nuovo, invia quel modulo ... e no, non funzionerà).Almeno con la Soluzione 1 la chiamata può effettivamente funzionare (anche se il programma riceverà la notifica della modifica ...) – Merc