Redazione
a- a+

Creare una chat in ASP

Vediamo come creare una Chat ASP in modo semplice e veloce. Codice ed esempio.

Introduzione
Una chat è uno dei metodi più diffusi su Internet per la comunicazione in tempo reale. Ne esistono di diversi tipi: dalle chat IRQ vecchie ma ancora molto ben funzionanti e dalle ottime prestazioni, a quelle in java, flash, php e anche asp. Purtroppo le ultime due, e soprattutto quelle Asp, non hanno molto successo a causa delle loro prestazioni. Una chat Asp per quanto possa essere veloce e performante non sarà mai come quelle nei canali IRQ. In ogni caso una piccola chat per poter dialogare con una amico in Asp non è un grande ostacolo.

Il progetto
Una chat Asp può essere realizzata essenzialmente in due modi, mantenendo il risultato invariato: memorizzando i messaggi in un database o in Application(). Nel nostro progetto analizzeremo questa seconda opzione.

Il Login
In una chat, al contrario di una zona del sito, il login serve solo per avere un nome (soprannome o nickname) per farsi riconoscere durante la discussione. Quindi è presente un semplice modulo, in cui inserire il nickname.

Come in tutti i sistemi di login (vedi tutorial precedenti) ci sono dei sistemi che gestiscono l'errore, in una chat l'unico caso di vero errore può essere o il mancato inserimento del nickname o la digitazione di un nickname già esistente in quel momento in chat.

Codice 10.1

<%' Il refresh viene ora impostato a 15 secondiif Request.Cookies("aggiornachat")="" then   Response.Cookies("aggiornachat")="15"End If%><html><head><title>WebMasterPoint.org</title></head><body><center><font face="verdana" size="2">Nickname<form action="lezione10_chat.asp?tipo=login" method="post"><input type="text" name="nickname" size="10"><input type="submit" value="Entra >>>"><%' Gestione errori - Nickname già in usoIf request("errore")=1 then   response.write "Il Nickname "& request("username") &" è in uso!"End If%></form></center></body></html>

Con il codice:

if Request.Cookies("aggiornachat")="" then    Response.Cookies("aggiornachat")="15"End If

viene controllato se già esiste il cookie che contiene il numero di secondi del refresh (l'unico caso in cui può esistere è se è già stato effettuato un login precedentemente), di default viene settato a 15 secondi.

Il modulo invia il nickname alla pagina che gestirà tutta la chat.

La chat
La pagina lezione10_chat.asp gestirà tutto il sistema chat. Dal layout al login, logout e all'inserimento dei messaggi. Il codice è lungo bel oltre 200 righe quindi analizzeremo solo le parti principali.

Application(20)=Application(19)Application(19)=Application(18)Application(18)=Application(17)Application(17)=Application(16)Application(16)=Application(15)Application(15)=Application(14)Application(14)=Application(13)Application(13)=Application(12)Application(12)=Application(11)Application(11)=Application(10)Application(10)=Application(9)Application(9)=Application(8)Application(8)=Application(7)Application(7)=Application(6)Application(6)=Application(5)Application(5)=Application(4)Application(4)=Application(3)Application(3)=Application(2)Application(2)=Application(1)

Spesso verrà incontrato questo codice qui sopra. Application permette di memorizzare dei dati sul server, non vengono utilizzati file perchè il suo utilizzo è molto più performante. Questo codice permette di memorizzare gli ultimi 20 messaggi inseriti in chat, volendo memorizzare piu' messaggi è necessario utilizzare piu' Application (sconsigliato). Come è intuibile viene liberato l' Application(1) che memorizza il messaggio piu' recente e viene eliminato l' Application(20) che è il messaggio piu' datato, questo permette la comunicazione! A secondo del caso nell' Application(1) inserire che un utente è entrato o uscito dalla chat o semplicemente il messaggio dell'utente.

Per visualizzare i messaggi si utilizza semplicemente un ciclo For

for f=1 to 20    Response.Write Application(f) & "<br>"next

Ad ogni accesso di un nuovo utente questo viene memorizzato in un altro Application

Application("chat_utenti") = Application("chat_utenti") & Request.Form("nickname") &"," & minute(now) & ","

Dove nickname è il campo del modulo di login. Quindi i nomi sono tutti concatenati. Per eliminarne, che ha deciso di uscire dalla chat, si utilizzano piu' istruzioni:

userarray=split(application("chat_utenti"),",")userscount=int(((UBound(userarray)+1))-0.5)for f = 0 to userscount-1 step 2    if userarray(f)=request.Cookies("emchatlogin") then  reptmp=userarray(f) & "," & userarray(f+1) &","  application("emchatusers") = replace(application("emchatusers"),reptmp,"")    end ifnext

Viene creato l'array con la funzione Split che separa i nomi in base al separatore virgola (,) e poi questo con un ciclo For viene analizzato e quando viene trovato il nickname viene eliminato con la funzione Replace. Per visualizzare la lista degli utenti, invece, si effettua sempre un ciclo For con un Response. Write dell'array.

userarray=split(application("chat_utenti"),",")userscount=int(((UBound(userarray)+1))-0.5)for f = 0 to userscount-1 step 2    response.write userarray(f) & "<br>"next

 

Questo è il codice necessario per fare una semplice chat, infine vengono aggiunti dei controlli del tipo: da dove proviene il visitatore, se ha effettuato il login, se ha un nickname, il refresh impostato, etc...

Pro e Contro
Sinceramente ho sempre odiato le chat in Asp come in PHP o altri linguaggi perché non hanno le stesse performance delle vere chat IRQ o degli IM (Sistemi di messaggistica istantanea come ICQ, Yahoo IM,...) e anche perchè un sistema basato sull' Application di server Windows consuma anche molte risorse fino ad essere lenta la chat ma anche lo stesso sito web. Infine il refresh di chat in Asp non avviene alla presenza di un nuovo messaggio ma dopo un tempo determinato. Di solito non si scende sotto un refresh di 10-5 secondi, altrimenti il server sarebbe veramente in crisi soprattutto in una chat con numerosi utenti all'interno.

L'unico vantaggio è sicuramente la possibile di personalizzare l'intera chat e l'inserimento di tutte le funzionalità che si vogliono avere.

Cancellare gli Application
L'amministratore del sito o della chat ha a disposizione una codice che permette di cancellare tutti gli Application nel caso in cui in quel momento la chat non è utilizzata. Immaginate un sito poco frequentato... se la chat viene utilizzata una volta alla settimana gli Application continuano a consumare risorse per una settimana, tanto vale eliminarli, niente di piu' semplice.

application("chat_utenti") = ""for f=1 to 20    Application(f)=""next