Newsgroup: it.comp.www.asp
Titolo: problemi con chat basata su un db

Ho realizzato una chat che si basa su un database di access.
All'interno del db ho utilizzato due tabelle: una per memorizzare le
informazioni sui messaggi, e una per memorizzare nickname, password e stato
dell'utente ( se collegato o no)
La struttuara della chat è semplice: 1 pagina frame con tre riquadri.
1° frame : componi il messaggio
2° frame: leggi i messaggi ( con refresh dei messaggi degli utenti caricati
dal db)
3° frame: utenti collegati   ( con refresh per vedre quali sono gli utenti
collegati)
Il mio problema sta nella gestione degli utenti collegati, quando uno di
questi chiude la finestra del browser o cambia la location del browser
(cioè, cambia indirizzo Web e abbandona la chat).
Se un'utente fa clic sul tasto logout, presente nell'applicazione viene
reindirizzato ad una pagina logout che ha il compito di:  liberare l'oggetto
Session ( attraverso Session.Abandon), reidinirizzare alla pagina di login,
e a cancellare i messaggi della sessione dell'utente dalla banca dati, e  a
impostare lo stato dell'utente nella banca dati a inattivo.
Quando un'utente però chiude la finestra del browser o cambia indirizzo
Internet, allora i suoi messaggi non vengono cancellati dal database ( ma
questo sarebbe il problema minore, perchè alla prima volta che si ricollega
alla chat e fa il logout i messaggi vengono cancellati tutti),
e soprattutto il suo stato nella banca dati rimane attivo e quindi per gli
altri utenti presenti nella chat è ancora presente.
Ho un file global.asa che espressamente imposta che se la sessione di
un'utente finisce, per qualsiasi motivo, lo stato dell'utente nel database
viene cambiato e diventa inattivo.
Tutto ciò non funziona però perchè il server non permette in nessuna delle
sue directory l'esecuzione di script esguibili come è in effetti il
global.asa.
Esiste un modo con asp, senza global.asa, activex o altri eseguibili di
capire se l'utente ha lasciato la pagina o ha chiuso la finestra del
browser, in modo che io possa al fine impostare lo stato inattivo
dell'utente.
Sono disperato, ho passato le ultime 20 ore a picchiarmi con questo
problema.
Se volete vi posso mandare l'esempio funzionante della chat ( ... con il
buco).
Cerco inoltre qualache esperto di asp per colaborazione profiqua.
Ciao e grazie

E' un vecchio problema......
Non c'è un modo sicuro, proprio per il fatto che le sessioni sono
*stateless*.
Non a caso le chat tipicamente utilizzano applet o activex con una
connessione permanente su una porta diversa.
L'unica robaccia che può servire in tal senso è la
response.isClientConnected, ma ha validità di pagina, quindi ti dice se
prima della fine il client ha chiuso il browser, e tipicamente non serve a
niente.
Nel tuo caso potresti fare si che ad ogni refresh del client venga
memorizzato il datetime dell' ultima richiesta per quell'utente sul server.
Quindi se per x secondi (o minuti) l'utente non refresha, lo consideri
*fuori*.
Potresti fare un DTS di svecchiamento che gira ogni tanto (se hai SQL).
ciao

 ha scritto nel messaggio
news:9tjbps$gir$1...@fe1.cs.interbusiness.it...


 la chat in un singolo riquadro, lascaindo negli altri la finestra di
login.
Qui si tratta di gestire correttamente i frames, devi farti un po' di
esperienza.
Se fossi in te cmq farei aprire la chat in pop-up eliminando così il back.
Certo rimane sempre alt <-, ma se l'utente si vuole far male........
ciao

 ha scritto nel messaggio
news:9tls38$f7n$1...@fe1.cs.interbusiness.it...
