Devo utilizzare la sessione o la cache per mantenere l'ora dell'ultimo polling quando si esegue il polling sul server a intervalli?

0

Sto costruendo un'app di chat web utilizzando la sessione per mantenere il tempo in cui l'app ha eseguito l'ultimo polling in modo che il server possa determinare se i messaggi esistono tra il tempo di polling corrente e l'ultimo tempo di polling. Funziona bene tuttavia, ci sono alcuni casi in cui i messaggi inviati dal client A non vengono ricevuti dal client B o lo stesso messaggio viene prodotto due volte sul client B. Naturalmente, i messaggi non vengono persi, sempre memorizzati nel db dopo che sono stati inviato.

Mi chiedo, questo è correlato al mio utilizzo della memoria di sessione in cui l'ultimo e il tempo di polling corrente di entrambi i client sono sempre diversi (a causa dei dati di sessione non accessibili da altri utenti / client )? O dovrei passare alla memoria cache in modo che l'ultima e ora attuale di polling di entrambi i client sul server siano sempre uguali ?

P.S. Uso il server Apache e MySQL con la funzione AJAX setTimeout () per eseguire il polling del server a intervalli regolari.

    
posta Mark 17.07.2014 - 09:34
fonte

1 risposta

1

Sembra che ci sia un sondaggio in corso nello stesso momento in cui viene inviato un messaggio. Se questo è il caso, un sondaggio successivo non riceverà un messaggio aggiunto molto vicino ma dopo il sondaggio. Hai provato ad aggiungere un po 'di wiggle room al sondaggio? Invece di ricevere messaggi dopo che l'ultimo sondaggio ha ricevuto i messaggi dopo l'ultimo sondaggio -1 secondo, dare al client di polling un po 'di logica per tagliare i messaggi già ricevuti? Che cosa stai usando per tenere traccia dei tempi di invio / sondaggio, quanto è preciso?

Inoltre, se ai tuoi messaggi viene assegnata una chiave primaria a incremento automatico invece di passare l'ultima volta del sondaggio, potresti volere assegnargli l'ultima chiave del messaggio. Non vi è alcuna differenza di precisione nell'incremento costante di numeri interi.

    
risposta data 16.08.2014 - 01:49
fonte

Leggi altre domande sui tag