fattibilissimo, chiamata sincrona, eventuale richiesta di conferma nell'evento onbeforeunload, e pace.

La chiamata sincrona non ti serve per elaborare la risposta del server e verificare nel browser che la query sia stata effettuata, come ti è già stato detto, la risposta del server serve solo per sbloccare il browser dell'utente in chiusura, quindi puoi anche stampare ciao, e fine, perchè nel server hai tutto quello che ti serve.

Il discorso multi tab regge e non regge, perchè se sei tu a volere controllare l'utente, non devi permettere multitab, e di metodi ce sono diversi, ma sono un tantino avanzati, e per uno che usa AHAH, difficili da spiegare in pochi passaggi.

In soldoni, dipende tutto da quanto controllo e quanta libertà vuoi lasciare all'utente.

C'è chi fa semplicemente polling, o ping client server, e c'è chi usa Comet. Domani useremo, se Zio vuole, le socket, e tutti sti problemi saranno risolti (almeno per quelli che sanno gestire le sockets).

Il polling, è un ping ogni N secondi, capace di aggiornare la situazione utente.

Se ogni N secondi arriva il ping, l'utente è li, altrimenti l'utente non c'è più, gli è caduta la linea, gli è esploso il portatile, altro, tutte cose che a te non interessano.

Il "ping" lo fai in setTimeout e, se proprio devi, con AHAH o qualunque altra libreria. La risposta, come l'invio di info, deve essere ridotta ai minimi termini, il rischio è avere un server che barcolla