Visualizzazione risultati 1 fino 6 di 6

Discussione: Pagina che lista gli utenti connessi

  1. #1
    tryhere non è connesso AlterVistiano
    Data registrazione
    19-09-2007
    Messaggi
    757

    Predefinito Pagina che lista gli utenti connessi

    Vorrei creare una pagina che richiede di inserire un proprio nickname e poi mostra l'elenco degli utenti attualmente "loggati" su quella pagina.
    Se un nuovo utente si logga, gli altri utenti lo devono vedere comparire nell'elenco.
    Analogamente se un utente effettua il logout gli altri utenti lo devono vedere sparire dall'elenco.
    Vorrei fare il tutto senza bisogno di aggiornare la pagina.
    Potete darmi qualche riferimento?

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    In generale hai bisogno di chiamate asincrone, quindi AJAX.

    Quando un utente accede a una pagina dovrà partire una chiamata (da JavaScript, magari usando jQuery) diretta verso uno script PHP. Questa chiamata comunicherà allo script che l'utente loggato (i cui dati saranno quindi disponibili nella sessione) è acceduto alla pagina. Lo script PHP memorizzerà quest'informazione da qualche parte, per esempio in un database.

    Quando l'utente abbandona la pagina partirà una nuova richiesta, analoga alla precedente, che informerà un secondo script PHP dell'avvenuto abbandono della pagina. Lo script aggiornerà quindi le informazioni precedentemente memorizzate.

    La pagina con la lista degli utenti dovrà inviare periodicamente una richiesta, diversa dalle precedenti, per chiedere al server la lista di utenti connessi a quella pagina. Lo script PHP nel server leggerà nel database e risponderà in base a quanto vi è memorizzato. La pagina, una volta ricevuta la risposta, aggiornerà la visualizzazione della lista di utenti collegati. Quest'approccio si chiama polling, non è molto efficiente e certamente non in tempo reale, ma è la più semplice e gestibile delle alternative.

    Ci sono alcuni aspetti a cui prestare attenzione:
    • in generale un utente può avere contemporaneamente più pagine aperte, quindi la relazione tra utenti connessi e pagine è "molti a molti" (a meno che la pagina da monitorare non sia una sola)
    • può accadere che un utente si "scolleghi" da una pagina senza chiuderla (es. scadenza della sessione, guasti...), può essere opportuno prevedere un time to live oltre il quale la presenza di un utente va cancellata

    I suggerimenti che do più spesso:


  3. #3
    tryhere non è connesso AlterVistiano
    Data registrazione
    19-09-2007
    Messaggi
    757

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Quest'approccio si chiama polling, non è molto efficiente e certamente non in tempo reale, ma è la più semplice e gestibile delle alternative.
    Se invece io volessi aggiornare la lista degli utenti connessi solo quando viene effettuata una delle prime due chiamate (nuovo login o nuovo logout)?

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Websocket, ma nella maggior parte dei web host (incluso AlterVista) non sono utilizzabili. Altrimenti ci sono framework come socket.IO, ma sono basati su tecnologie (in questo caso NodeJS) che raramente trovi offerte dai servizi di web hosting "tradizionali".

    I suggerimenti che do più spesso:


  5. #5
    tryhere non è connesso AlterVistiano
    Data registrazione
    19-09-2007
    Messaggi
    757

    Predefinito

    Quindi nel caso di altervista cosa consigli di fare?

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Resterei sul polling, con periodo ragionevole, per esempio 5 secondi.

    I suggerimenti che do più spesso:


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •