Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [ajax] me lo date un parere??

    ho sviluppato una chat completamente in AJAX funzionante via web e necessita solo di un browser moderno...

    se volete andare a farci un giretto l'indirizzo è http://www.tarini.biz/ajax/xchat

    fatemi sapere che ne pensate :P :P
    www.gext.it

  2. #2
    ogni tanto invia due volte invece che una sola

    è comunque un buon lavoro, se posso darti alcuni consigli ...

    1 - aumenta il tempo di refresh, così ti auto-killi il server se ci sono tante persone (porta l'aggiornamento ad almeno 2 secondi, meglio 2 e mezzo o 3, uno o mezzo è troppo poco)

    2 - disabilita i tasti quando si effettuano le operazioni, se invio non devo poter reinviare finchè la chat non ha finito l'elaborazione del precedente invio

    3 - quando si invia, la chat non deve caricare niente, deve fermare il precedente reload, inviare e legere la risposta per poi reimpostare il reload


    detto questo non capisco il senso di mostare la sessione all'untente, cosa se ne fa di una stringa da 16 caratteri in esadecimale ?

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Originariamente inviato da andr3a

    3 - quando si invia, la chat non deve caricare niente, deve fermare il precedente reload, inviare e legere la risposta per poi reimpostare il reload
    questa non mi è tanto chiara...

    Originariamente inviato da andr3a


    detto questo non capisco il senso di mostare la sessione all'untente, cosa se ne fa di una stringa da 16 caratteri in esadecimale ?

    è semplicemente a scopi di debug :P

    ps grazie per il tempo perso e per i primi due consigli
    www.gext.it

  4. #4
    Originariamente inviato da tarini
    questa non mi è tanto chiara...
    le chat non basate su socket hanno 2 caratteristiche:

    1 - sfruttano un refresh ogni tot secondi
    2 - proprio perchè sfruttano un refresh sono critiche con tanta utenza simultanea, quindi non vanno sempre bene e rischiano di intasare il server

    per evitare di ritrovarsi di prepotenza al punto 2 devi tentare di richimare il server meno volte possibili.


    quando un utente effettua l'invio di dati stà usando un oggetto asincrono, se un'latro nel frattempo richiede il testo del "canale" le richieste diventano doppie, per il client che invia o riceve e per il server, che elabora la richiesta dati due volte, una per inserirla ed una per mostrare il testo del canale.

    La situazione più comune e fastidiosa è che mentre invio ricevo la risposta dal server che non aveva ancora elaborato il mi otesto inviato.

    Questo comporta uno slittamento di tempo tra l'invio e la visualizzazione sul canale del testo.

    Come si risolve ?
    L'azione invia testo deve fermare immediatamente l'oggetto addetto alle richieste, effettuare l'invio del testo che sul serer verrà salvato su file o database ma allo stesso tempo verrà restituito l'aggiornamento del canale, quindi l'invio diventa anche una chiamata.
    Alla fine dell'invio si scrive il risultato della chiamata sul canale e dopo questo si può riabilitare l'intervallo di tempo per l'altro oggetto addeto al solo aggiornamento e non anche all'inserimento.

    Questo evita il presunto mancato inserimento su chiamate sovrapposte ed assicura meno carico e meno chiamate per il server (ma anche un intervallo di almeno 2 secondi per ogni aggiornamento dovrebbe aiutare, meno di 2 diventa pesante da gestire on-line).


    Spero di essermi spiegato meglio
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    attualmente ho presupposto alcune funzioni tra le quali le seguenti:

    sendmex -> che si occupa di inviare il messaggio al server
    refresh -> che si occupa di refreshare la pagina con nuovi messaggi e con l'aggiornamento degli utenti online.
    sendmexCallback -> che si occupa di gestire il callback della richiesta effettuata dalla funzione sendmex

    All'interno della funzione callback eseguo la funzione refresh aggiornando l'intera pagina e quindi riportando PER FORZA anche l'ultimo messaggio inserito...

    Sei sicuro che si possano verificare errori di invio messaggio e di non visualizzazione dello stesso??
    www.gext.it

  6. #6
    Originariamente inviato da tarini
    Sei sicuro che si possano verificare errori di invio messaggio e di non visualizzazione dello stesso??
    ho parlato di impressione e latenza, non di mancata visualizzazione.


    i metodi dovrebbero essere solo 2


    load => aggiorna con tutti i messaggi

    sendAndLoad => elimina l'intervallo del load, invia e riceve tutti i messaggi con una sola chiamata, aggiorna con questi (quindi ultimo compreso), riattiva l'intervallo del load


    queste le basi per una chat asincrona, imho
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    compreso perfettamente la tua idea. cercherò di implementarla il prima possibile!

    solo una cosa...


    Originariamente inviato da andr3a
    sendAndLoad => elimina l'intervallo del load, invia e riceve tutti i messaggi con una sola chiamata, aggiorna con questi (quindi ultimo compreso), riattiva l'intervallo del load
    sai come fare in js a disattivare un timeout inserito precendentemente??

    basta chiamare un setTimeout() vuoto??
    www.gext.it

  8. #8
    sistemato il problema che dicevi

    ora il metodo sendMex con un unica connessione manda il messaggio nuovo e riceve i messaggi da stampare


    inoltre ho aggiunto un controllo client-side per evitare l'invio multiplo dello stesso messaggio e la stampa del timestamp relativo all'invio di ciascun messaggio !

    pare tutto funzionare
    www.gext.it

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da tarini
    sai come fare in js a disattivare un timeout inserito precendentemente??
    Quando setti l'intervallo assegnalo ad una variabile pubblica:

    miaVar = setTimeout(....)

    per interromperlo basta:

    clearTimeout(miaVar)

    info: http://www.devguru.com/technologies/...ript/10855.asp

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10
    ottimo

    ho apportato degli ulteriori miglioramenti sia alla struttura client che alla struttura server!

    ho notato anche che molta gente è salita a dare il suo contributo di tester! GRAZIE A TUTTI


    mi ha contattato lo staff di html.it, tra poco passerò a loro i sorgenti in modo che li possano mettere nella sezione script


    prossime modifiche:
    - notifica quando un utente lascia la chat
    - faccine
    - varie ed eventuali


    a presto!
    www.gext.it

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.