Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    16

    [PHPH & AJAX] Aggiornamento asincrono di una pagina sul client

    ciao a tutti, ho aperto una discussione poco sotto su un problema analogo, ma mi è sembrato doveroso aprire un altro topic, perchè forse la soluzione è più utile del problema, mi spiego:

    sto scrivendo un progetto (che sarà poi la mia tesi) php+mysql con ajax, il tutto dovrò poi interfacciarlo con un server asterisk, ma questa è un altra storia, quello che mi interessava nel topic precedente è il seguente problema:

    Posso aggiornare una pagina sul client dato un evento sul server, senza dover aggiornare la pagina ogni tot secondi sul client e senza avere nient'altro che un browser pulito sul client?

    M'è stato risposto chiaramente "NO" in quanto come da definizione dell'architettura client-server, il server risponde solo ad una richiesta del client.

    La soluzione del refresh ogni tot secondi non mi ha convinto, così ho ideato questa, e ho bisogna della vostra onniscenza per metterla in pratica:

    Mettiamo di avere un client, sul quale gira un browser il quale visualizza una pagina con ajax che fa riferimento ad un file "prova.php" residente sul server, insomma, alla pressione di un tasto sulla pagina, lo script javascript va ad effettuare la richiesta della pagina php, e fin qui è ajax duro e puro.



    Quello che m'è venuto in mente è:
    e se facessi un sistema che invia la richiesta e aspetta che il server risponda, posso dare l'impressione che la pagina si aggiorni tramite un evento del server? mi spiego meglio:

    -Mettiamo che il client clicchi sul pulsante al tempo 0
    -mettiamo che l'evento che mi interessa, accadrà sul server al tempo x

    quello che voglio è che al tempo x, sul client succeda qualcosa, mettiamo che venga fuori una scritta tipo 'ciao mondo'

    il problema è che le richieste http dopo un po che il server non risponde, scadono, giusto? mettiamo che scadano al tempo y (non so quanto valga)

    immaginiamo questo scenario, x<y, per cui appena il client clicca sul tasto, il client stesso invia la richiesta, e sta ad aspettare la risposta.
    la risposta arriva, al tempo x e siamo tutti felici.

    immaginiamo quest'altro scenario, che x>y per cui il client clicca sul tasto, la richiesta viene mandata ma dopo un tempo y scade senza ricevere una risposta.
    a questo punto metterei un controllo sul server, che ogni y-Δt invii la risposta al client, ma in maniera che il client invii subito una nuova richiesta in modo da aspettare l'evento..

    Posto un immagine, non ho spiegato molto bene, spero si capisca...


  2. #2
    mi spiace, ma non funziona così: sarebbe un carico di lavoro ENORME per il server mantenere la connessione attiva per un periodo così lungo, senza contare che non puoi sapere a priori quando un determinato evento capita, dato che, mi sembra di aver capito, 'sto evento sarà un utente che scrive un messaggio, non puoi sapere se accadrà dopo secondi o minuti o anche ore, il browser dopo un tot di tempo, semplicemente fa scadere la richiesta, chiudendo la connessione. Senza contare che non è un belvedere avere un server che non risponde alle chiamate, costringe a mantenere connessioni aperte che non scadono mai e mangiano la banda del server.
    I DON'T Double Click!

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    16
    cioè dici, a basso livello, che nel mentre la connessione è aperta, cioè quando il client aspetta la risposta dal server, la connessione rimane attiva e sul canale è riservata una banda specifica per quella connessione? e viene liberata solo quando il server risponde ala richiesta?

  4. #4
    Non proprio, ma, diciamo che c'è una buona distinzione tra, avere una connessione aperta ed essere nel mezzo del ciclo Request => Response
    I DON'T Double Click!

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    16
    mi stai dicendo quindi che dal client, mentre siamo in questa fase di "stallo", non è possibile effettuare una nuova richiesta? o occupa il server anche per gli altri client?

  6. #6
    dico solo che non è ne la più efficace, ne la più sicura soluzione.

    C'è un motivo se di solito le chat sono programmi standalone da installare sul client: questi programmi si mettono in ascolto su una determinata porta permettendo di ricevere comunicazione dall'esterno e inviano i messaggi ad un altra porta, collegata di solito ad un server di smistamento, che si occupa di recapitare il messaggio all'indirizzo IP corretto, sulla porta alla quale il client è in ascolto.
    I DON'T Double Click!

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    16
    il problema è appunto sfruttare il browser, senza aver bisogno di installare nient'altro sul client.. comunque approfondirò il discorso con il mio prof di reti di telecomunicazioni... secondo me, con un server http leggermente modificato, si può arrivare ad un applicazione del genere..

  8. #8
    Per arrivare ad una cosa del genere, la soluzione migliore è un applet o una flash application, non andare a smandruppare il server in questo modo.
    I DON'T Double Click!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.