Lav en chat med ASP og AJAX

Tags:    asp
Skrevet af Bruger #8773 @ 21.06.2007
Hej udviklere.

Jeg har efter hånden set en stor flok der har spurgt efter hvordan man laver sin egen chat, og derfor tænkte jeg at jeg ville skrive en artikel om det.
Jeg har aldrig været særlig god til at forklare noget til andre mennesker, men jeg vil nu gøre mit bedste for at i kan forstå det.

Jeg vil prøve så godt som muligt at beskrive de enkelse liniers funktion igennem hele scriptet, så alle kann følge med.

Funktionerne


Scriptet kommer til at indeholde følgene funktioner:
-Skrive
-Se andres besked uden at opdatere
Det er ikke meget, men det skal også kun være en meget simpel chat.

Færdigheder


For at kunne følge med i denne artikel, skal du have arbejdet med ASP, HTML og AJAX/Javascript før. I ASP skal du vide hvordan man arbejder med en MySql database, som jeg vil bruge i dette eksempel.

Databasen


I databsen skal du have oprettet en tabel med 3 felter.
Tabellen skal du kalde "chat", og den skal indeholde felterne:
-id (int, auto_increment & unik)
-ip (text)
-besked (text)
Du kan også vælge at indsætte dette under SQL
Fold kodeboks ind/udKode 


Filerne


Vi skal bruge 6 filer:
db.asp
db_close.asp
default.asp
vindue.asp
hent.asp
skriv.asp

Jeg vil nu gennemgå filerne en ad gangen, og så vidt muligt kommentere det hele under vejs.

db.asp


I db.asp skal forbindelsen til databasen oprettes.
Den ser således ud:
Fold kodeboks ind/udKode 


db_close.asp


I db_close.asp skal forbindelsen til databasen lukkes igen.
Den ser således ud:
Fold kodeboks ind/udKode 


default.asp


I default.asp samler vi alle vores filer, så det hele passer sammen. Dette kan du vælge at gøre som du vil, i iFrames, eller Frames, eller hvordan du nu vil gøre det. Jeg har valgt at bruge frames:
Fold kodeboks ind/udKode 

Jeg har to frames, et stort i toppen, og et lille neden under. Det store er vindue.asp hvor chatmeddelelserne kommer til at være, og den lille er skriv.asp hvor man kommer til at kunne skrive beskeder.

vindue.asp


I vindue.asp kommer alt kommunikation med filen hent.asp til at foregå. Dette sker via AJAX. Koden ser således ud:
Fold kodeboks ind/udKode 

Det er meget kort fortalt en AJAX funktion der går ind og henter information fra filen hent.asp, som vi kommer til nu.

hent.asp


I filen hent.asp henter vi informationen fra databasen. Den ser således ud:
Fold kodeboks ind/udKode 

Jeg vil ikke kommentere denne kode her nede, da der er kommentare hele vejen igennem koden..


skriv.asp



Så har vi til sidst skriv.asp tilbage.
Den er delt op i 2 dele. Første del er hvis der er trykket send, altså den del hvor vi gemmer det man har skrevet, og anden del, hvor man kan skrive:
Fold kodeboks ind/udKode 


Afslutning



Det kan godt være at alt dette har virket lidt rodet, men det virker i hvert fald.
Hvis du er intereseret i af downloade hele scriptet, så du slipper for at side og kopiere det hele, kan du hente scriptet HER

Jeg håber det var til at forstå.

Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (10)

User
Bruger #4479 @ 21.06.07 19:59
Relevant emne. Kunne dog godt have tænkt mig at du brugte XML i stedet for HTML. Den kunne sagtens have været mindre ressource-krævene, men 4 herfra.
User
Bruger #8773 @ 21.06.07 20:34
Det er sikkert rigtigt nok, men jeg er ikke så meget inde i XML, derfor valgte jeg at lave det som jeg gjorde ;)

Der var også andre ting der kunne have været anderledes, for eksempel den måde det bliver hentet, og der er jo massere af muligheder for at slette beskeder der er mere end et antal dage gamle, hvis man ikke bruger den hver dag, men det er jo sådan nogle ting man selv kan side og lege med og bygge på ;)
User
Bruger #5779 @ 22.06.07 07:21
En 1'er herfra - denne løsning kommer aldrig til at skalere til et stort antal samtidig brugere, da den simpelthen vil tage livet af webserveren. :)
User
Bruger #8773 @ 22.06.07 07:46
Det er ikke så meget det at bruge den, det er jo også det at kunne bruge AJAX i denne sammenhæng ;)
User
Bruger #8773 @ 23.06.07 12:37
Linket til download er blevet ændret. Det er nu HER
User
Bruger #11596 @ 27.06.07 14:30
En 1'er herfra - denne løsning kommer aldrig til at skalere til et stort antal samtidig brugere, da den simpelthen vil tage livet af webserveren. :)

Det der er negativt ja den er ikke super men den giver en et indblik i hvordan AJAX kan bruges
En 4'er her fra
User
Bruger #8773 @ 27.06.07 18:51
Det der er negativt ja den er ikke super men den giver en et indblik i hvordan AJAX kan bruges
En 4'er her fra [/qoute]

Det var også meningen ;)
User
Bruger #12532 @ 04.11.07 19:11
Hvorfor samler du ikke alle koderne i en så folk kan sætte det direkte ind på deres side??
User
Bruger #8773 @ 14.11.07 21:22
Hvorfor samler du ikke alle koderne i en så folk kan sætte det direkte ind på deres side??

Nu har jeg jo lavet et download link i stedet for, er det ikke lige så godt?
User
Bruger #14381 @ 20.05.09 19:56
LIGE I ØJET!!!


Selve chatten og sådan har jeg ikke kigget så meget på men der var hele AJAX koden jeg skulle bruge, for at få min egen lille "now playing" gadget til at virke.
Indtil videre har den kørt på META REFRESH
Kig selv: http://www.hsp.dk/nows.htm
Du skal være logget ind for at skrive en kommentar.
t