Riflettendo rapidamente le modifiche su un sito a tutti i visitatori

3

Di ':

  • Ho un sito web che contiene un singolo interruttore a due stati.
  • Al momento ci sono 2 (o più) clienti che visualizzano il sito.

e

  • 1 client esegue il movimento dell'interruttore.

Come posso riflettere su tale cambiamento tra tutti quelli che attualmente visitano il sito?

Il modo più semplice a cui pensavo era di salvare lo stato corrente del lato server dello switch e invitare i client a inviare costantemente richieste AJAX chiedendo lo stato dello switch, che aggiorna.

Il problema con questo approccio è, soprattutto quando ci sono molti client, il server sarà costantemente spammato dalle richieste; anche se non è successo alcun cambiamento.

L'altro approccio che ho pensato è stato quello di notificare al server quando 1 cliente apporta una modifica e in qualche modo trasmettere quella modifica a tutti i client attualmente connessi.

Purtroppo, essendo HTTP senza stato, dovrei mantenere un elenco dei client attualmente connessi lato server. Non so come rileggerei quando un client non visualizza più la pagina, o come potrei inviare un messaggio a un client senza che prima inviasse una richiesta.

Qual è il modo più semplice per ottenere ciò che non si basa sui client che eseguono costantemente il polling del server?

Nel caso non sia ovvio, questo è un esempio molto semplificato. Il mio vero progetto è un gioco in cui ci saranno molte "opzioni", ognuna delle quali può contenere molti diversi stati possibili.

    
posta Carcigenicate 28.02.2016 - 17:18
fonte

1 risposta

4

Hai chiesto di mantenerlo semplice:

Come te, manterrei lo stato "ufficiale" del lato server dello switch.

Quindi raggrupperei quello stato nella risposta a qualsiasi altra chiamata che il client potrebbe fare.

Ad esempio, fai in modo che l'oggetto risposta restituito dal server assomigli a

class DataFromServer() {
    bool mySwitchState;
    int errorCode;
    string errorMessage;
    object ActualData;
}

Indipendentemente dalla richiesta che il tuo cliente ti fa, rispondi con uno di questi, opportunamente compilato.

In questo modo non devi tenere traccia dei tuoi clienti e non invierai ai clienti a cui non interessa più.

Se hai veramente bisogno di un meccanismo di push (un gioco potrebbe), potresti voler esaminare Socket.io (per un commento di @AndrewJenkins) o altre tecnologie push come il polling lungo.

    
risposta data 28.02.2016 - 17:30
fonte

Leggi altre domande sui tag