17. februar 2007 - 12:09Der er
25 kommentarer og 1 løsning
Live Chat Room
Hej eksperter,
Jeg har overvejet at sætte et live chat room på en af de sider, jeg har lavet, men jeg ved overhovedet ikke, hvad det kræver.
Kan man benytte kun php og mysql til et live chatroom? (dette ville være at foretrække, da jeg er ok inde i disse koder)
Eller SKAL man lave noget i java - synes jeg har set dette være påkrævet i det chatroom, som jeg selv har benyttet mest. (dette ville absolut ikke være at foretrække, da jeg kun har minimum kendskab til java, og ikke engang ved, hvordan man benytter det på et website)
Min holdning er, at jeg helst laver alle koder selv, og det behøver ikke være særlig avanceret. Men for at jeg kan lave det selv bliver jeg nødt til at kende til principperne/basis i et live chatroom - vil nogen forklare :) ?
Jeg har fundet http://phpopenchat.org/index.php som er freeware, og som kan downloades, men der er alt for mange funktioner, som jeg slet ikke har brug for.
Der skal nærmest bare være ét eneste chatroom, hvor de online brugere kan tale med hinanden (og ikke noget med at hviske og andet) Bare logge på chat og snakke - that´s it.
Men hvad er det grundlæggende, man skal vide for at opbygge et live chatroom?
Et overordentligt simpelt chatroom ville bestå i at brugerne blev præsenteret for et <textarea>, hvor de kunne skrive tekst og så en boks, hvor de kunne læse tekst. Når de trykkede send til det de havde skrevet, blev det lagt ind på mysql-serveren. Og så kunne du opdatere boksen med beskederne hvert sekund, afhængig af hvor "real time" du vil have det.
3) opdatere hvert sekund (hvordan opdaterer man kun tekstboksen? for hvis brugerne er ved at skrive en besked som skal sendes ... så bliver det vel slettet, når man opdaterer siden?) Eller hvordan kan man undgå at det man er ved at skrive ikke ryger?
danishmale> jeg ved ikke hvad AJAX er, men jeg går ud fra at det er et chatroom efter jeg har forsøgt at søge på dette på nettet.
Men jeg kan ikke få det til at virke - hvis du har nogle hints, må du gerne komme med dem. Jeg kan ikke engang finde den tekststreng, hvori teksten gemmes - og der bliver ikke oprettet nogle nye tabeller i min database.
AJAX er kun et mindre javascript som sender og henter de texter fra en PHP/ASP side som lægger linierne ind i en database på helt almindeligvis.
Eksemple:
var xmlHttp
function showCustomer(str) { // Sends query xmlHttp=GetXmlHttpObject(); if (xmlHttp==null) { alert ("Your browser does not support AJAX!"); return; } var url="getcustomer.php"; url=url+"?q="+str; url=url+"&sid="+Math.random(); xmlHttp.onreadystatechange=stateChanged; xmlHttp.open("GET",url,true); xmlHttp.send(null); }
function stateChanged() { if (xmlHttp.readyState==4) { // Write to DIV which contains result document.getElementById("txtHint").innerHTML=xmlHttp.responseText; } }
function GetXmlHttpObject() { var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; }
AJAX er en kombination af forskellige teknologier, som så bruges til at hente data asyncront uden reload af en side. Det kræver brugen af XmlHttpRequest objektet for at hentet data over HTTP.
Det er smart nok i forbindelse af en chat. Dog er danishmales eksemple alt alt for simplet, og hvis du ikke kan forstå disse teknologier vil jeg anbefale dig at opgive alting om at lave en chat selv, og gå ud at købe (eller finde en gratis) istedet.
danishmale> ved du hvor jeg kan læse mere om AJAX? og hvordan det virker? og hvilke muligheder jeg har der? osv osv osv :)
Jeg har lavet en side, der henter ind i en iframe hvert 2. sek fra en phpside - det virker såmænd godt nok ... men men men, siden "blinker" hele tiden, når der reloades :( - er det sådan noget som AJAX kan forbedre?
windcape> jeg lærer, fordi jeg ikke ved det allerede ;)
windcape> try { windcape.getGodToneIForum(); } catch (e) { //error, no such thing windcape.delete("spydige kommentarer"); windcape.givGodToneTilBrugIForum("venlighed"); }
Og man skal lære at kravle før man kan gå. At gå i kast med AJAX uden grundlæggende viden omkring javascript er et forsøg på at løbe før du har lært at kravle.
Og hvis det er en spydig kommentar at bede folk om ikke at kopiere tilfældige scripts de ikke ved om virker ind som en løsning, så lad det være.
Forskellen er jo om løsning+spydighed eller ingen-løsning+gode-tone er bedst :p
Jeg har grundlæggende viden omkring javascript, jeg forstod blot ikke et script, jeg fandt på nettet (troede det var AJAX, men det brugte blot AJAX) - forstod ikke hvad AJAX overhovedet var, men det har jeg en bedre fornemmelse af nu. Så jeg skal nok finde ud af det :)
Det er ikke det, at man irettesætter folk, det er måden man gør det på.
danishmale> jeg kan godt hente xml-sidens indhold ind i mit textarea, men jeg kan ikke skrive noget til xml-siden? har ledt efter det på nettet, og jeg synes at det hele henter data? kan det passe, at jeg ikke kan skrive noget ind i xml-filen?
skal jeg gøre et eller andet i et php-script også?
AJAX eksemplet som der er vist sender og modtager de data (str) som en PHP side bearbejder, om du skal skrive eller læse fra en XML fil gør du det i en PHP ikke i AJAX scriptet.
Jeg fandt nogle koder, som jeg bare har tilpasset, men det kører rigtig godt, så det er bare lige som det skal være ... lige et par ekstra tilrettelser, men det skal nok komme :) ... såsom online brugere og wake-up-calls :) Men et godt stykke henad vejen. Tusind tak for hjælpen, jeg havde ikke selv fundet ud af, at jeg skulle bruge det såkaldte AJAX :) :)
Vil du ikke lægge et svar, du har så sandeligt fortjent dine point :)
windcape >> Derimod bruger han sine try/catch'es fuldstændig efter bogen:
function GetXmlHttpObject() { var xmlHttp=null; try { // Her oprettes objektet, hvis browseren er: Firefox, Opera 8.0+, Safari (IE7) xmlHttp=new XMLHttpRequest(); } catch (e) { // Browseren er åbenbart Internet Explorer try { // Her oprettes objektet, hvis 'Msxml2.XMLHTTP' understøttes xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { // Her oprettes objektet med 'Microsoft.XMLHTTP', hvis 'Msxml2.XMLHTTP' ikke understøttes xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; }
Det eneste, man kunne ønske af ændringer ved dén løsning, er endnu en nested try/catch ved oprettelsen med 'Microsoft.XMLHTTP' ... ellers er det såmænd lige efter 'Testamentet' ;o)
danishmale> vil du ikke lægge et svar, jeg har ikke fået gjort mere ved det end det jeg lavede tidligere. Men det er også ok - sparsomt, men det virker ;) (du må meget gerne lægge et svar :)
olebole> tak for dit svar ... hvad skulle den sidste nest være, hvis der sker en fejl ved oprettelsen med 'Microsoft.XMLHTTP'. Er der flere muligheder for at oprette dette "AJAX-objekt" (jeg er desværre ikke nok inde i det til at benytte de rette fagudtryk, men jeg håber du forstår, hvad jeg mener :)
Hvad gør jeg i øvrigt, når jeg har tilpasset en anden persons koder, som rigtig venligt er lagt ud på nettet.
Skal jeg rette i <meta name="Author" content="xxx" /> (jeg har jo tilpasset koderne til min egen side, så de ligner ikke dem, som han har lavet)
Eller laver man et link til hans side eller hvordan? Og på hvilken side? En overordnet FAQ-side eller på selve den side, hvor koderne er sat ind.
Lone >> Jeg har ikke lige navnene på de andre versioner present - og jeg er ikke hjemme ved mine koder ligenu (jeg bruger ikke navnene til hverdag, men har dem liggende i et AJAX-library, jeg har skrevet). Skal prøve at huske at få dem skrevet her.
Du kan evt. blot lægge en kommentar i dine koder om, hvor du har fundet dem ... det bliver de fleste JS-autorer glade for ;o)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.