/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Chat med flere rum, hvordan det skal hænge~
Fra : Stig Sørensen


Dato : 25-11-08 10:59

Hej gruppe.

Er igang med at lave en chat i PHP med mySQL som backend.
Mens jeg langt fra er færdig, sidder jeg og fundere over hvordan det i
praksis skal fungere mellem server og klienten.

Jeg vil ikke have noget Java eller Flash, så det må jo blive
Javascript (Ajax?) der skal hjælpe mig her.
Havde tænkt mig en iframe med indholdet, nederst en simpel form hvor
man kan submitte sit shout afsted.

2 hovedpunkter som jeg lige kan komme i tanke om på stående fod:

Når man er inde i chatten (en typisk god gammeldaws chat, som man
kendte fra de gamle tider), skal jeg så bare vise de sidste 20-30
shouts frem fra mySQL'en?
Eller er det bedre at lave det således, at når man kommer ind i
chatten, så kan man ikke se tidligere shouts, men kun fremtidige
shouts vil vises. Hvordan dette helt fungere ved jeg ikke, jeg kan jo
godt hente shouts (hvis vi antager at hver shout har et timestamp) som
kun er ældre end da man indgik i chatrummet, men jeg har googlet en
del inden mit indlæg her, og det lader til at man også kun kan en ny
shouts frem, således at der overhovedet er nogle nye.
Så hvis jeg har været inde i et chatrum i et stykke tid, og der er
chatten er fyldt med shouts, så hver gang iframe refresher i det
skjulte, så henter man ikke bare sidste 20-30 shouts frem fra mySQL,
men man tjekker om der er kommet noget nyt, hvis ja, tilføjer man de
shouts (og fjerner de ældste), eller vises de shouts blot man allerede
har set. Men det kræver vist noget forstand på Ajax?
Anyway, første metode, ved blot at hente 20-30 shouts ved hvert
refresh, er det en dårlig ide?


Andet hovedpunkt, er hvordan iframe skal refreshen (jeg ved godt der
er lidt clientside i den, og skal nok også futte derhen når det bliver
nødvendigt), for der skal vel noget Javascript til at få den til at
refreshe hvert 2. sekund feks. Men det skal jo gerne være således at
man ikke kan se at den refresher (ændre af title i ens browser, muse-
markør viser timeglas, "klik-lyd" i Internet Explorer 6 etc..).
Hvordan koder jeg Javascript sammen med mit php der skal hente
shouts'ne frem?




Jeg ved godt at jeg med mit ene indlæg her, ikke kan blive klog nok
til at få det hele lavet, men forhåbentligt kan folk hjælp mig lidt
videre, flere spørgsmål vil opstå og tilsidst - forhåbentligt - har
jeg fået lavet mig min chat færdig.


Mvh
Stig

 
 
Stig Johansen (25-11-2008)
Kommentar
Fra : Stig Johansen


Dato : 25-11-08 21:14

Stig Sørensen wrote:

> Jeg vil ikke have noget Java eller Flash, så det må jo blive
> Javascript (Ajax?) der skal hjælpe mig her.

Ja.

> Havde tænkt mig en iframe med indholdet, nederst en simpel form hvor
> man kan submitte sit shout afsted.

Du behøver ikke iframe sammen med Ajax, en <div> kan gøre det.

[snip en masse]

I stedet for at kommentere punkt for punkt, er et forslag.
Giv hver message et fortløbende nummer.

Når du skal hente data første gang, kan du vælge at starte fra et givent
nummer, eller lave en SELECT TOP 20, eller hvor mange du nu vil starte med.

Når du afleverer data fra serveren til klienten, så sæt en header,
eksempelvis lastmessage.

På klienten gemmer du så lastmessage i en variabel(Javascript).

I dit timer loop med Ajax, med det antal sekunder, du vil, sender du
lastmessage med til serveren, som eks:
http:min.server/chat/messages.php?lastmessage=<det gemte nummer>

På serveren laver du så en
SELECT messages... WHERE MessageId > lastmessage
og returnerer data, sammen med en header med det nu højeste nummer.

Og så videre...

Jeg har et ASP drevet 'legetøj' her:
<http://w-o-p-r.dk/shoutbox/Gonzales/shoutbox.asp>
Den er lidt kryptisk mht. (automatisk) brugeroprettelse
Et anden stykke legetøj baseret på native Linux+SQLite her:
<http://wopr.lir.dk/shoutbox/shoutbox.html>

Javascript's kan du selv stjæle, og PHP-delen må du selv fabrikere.
Jeg har ikke en PHP version.

--
Med venlig hilsen
Stig Johansen

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31962
Nyheder : 719565
Indlæg : 6408176
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste