Avatar billede lone_a_p Praktikant
17. februar 2007 - 12:09 Der 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?
Avatar billede loevgaard Praktikant
17. februar 2007 - 16:10 #1
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.
Avatar billede lone_a_p Praktikant
17. februar 2007 - 16:51 #2
1) tekstbox med et fast antal linjer

2) mysql-tabel med beskeder

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?
Avatar billede danishmale Nybegynder
17. februar 2007 - 19:46 #3
Brug AJAX til at opdatere/sende beskeder med, så undgås kliklyde og opnås glidende opdatering
Avatar billede lone_a_p Praktikant
18. februar 2007 - 12:48 #4
danishmale> har kigget på det, og kan ikke gennemskue, hvordan det virker, der er intet dokument, der fortæller hvordan det sættes op

l0vgaard> jeg er mere interesseret i, hvordan man kun opdaterer et textarea, og ikke alt andet på siden
Avatar billede lone_a_p Praktikant
18. februar 2007 - 13:38 #5
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.
Avatar billede danishmale Nybegynder
18. februar 2007 - 15:14 #6
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;
}
Avatar billede windcape Praktikant
18. februar 2007 - 15:22 #7
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.
Avatar billede windcape Praktikant
18. februar 2007 - 15:22 #8
try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

*grin*

Du ved ikke engang hvad try{}catch{} er til gør du?
Avatar billede danishmale Nybegynder
18. februar 2007 - 16:08 #9
se du snakker og *BEEP* for det er et eksempel der er hentet direkte fra w3school's hjemmeside :-P
Avatar billede windcape Praktikant
18. februar 2007 - 17:29 #10
Det gør eksemplet korrekt på nogen måde.

try
{
  // hvis en exception kastest
} catch(e) {
  // betyder at der skete en fejl
}

Du skal jo for helvede ikke sætte xmlhttp til et objekt når der netop skete en fejl. Prøv lige at læse op istedet for at kopiere eksempler med fejl i.
Avatar billede lone_a_p Praktikant
18. februar 2007 - 23:33 #11
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");
    }
Avatar billede windcape Praktikant
19. februar 2007 - 12:50 #12
lone_a_p

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
Avatar billede lone_a_p Praktikant
19. februar 2007 - 13:34 #13
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å.
Avatar billede lone_a_p Praktikant
19. februar 2007 - 15:16 #14
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å?

mvh Lone
Avatar billede danishmale Nybegynder
19. februar 2007 - 19:40 #15
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.
Avatar billede lone_a_p Praktikant
20. februar 2007 - 14:56 #16
Kære danishmale,

Så lykkedes det endelig, og jeg er super glad :)

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 :)

Mvh en superglad Lone
Avatar billede olebole Juniormester
20. februar 2007 - 16:17 #17
<ole>

Med al respekt ... w3schools' tutorial om AJAX har ikke meget tilfælles med AJAX:
    http://www.eksperten.dk/spm/763611#rid6644045  ;o)

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)

/mvh
</bole>
Avatar billede danishmale Nybegynder
20. februar 2007 - 18:02 #18
Glæder mig for dig lone ;-)
Avatar billede lone_a_p Praktikant
20. marts 2007 - 00:10 #19
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.

Mvh Lone
Avatar billede danishmale Nybegynder
20. marts 2007 - 22:32 #20
Prøver lige igen :-D
Avatar billede lone_a_p Praktikant
20. marts 2007 - 22:35 #21
super - tak :)
Avatar billede olebole Juniormester
21. marts 2007 - 13:50 #22
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)
Avatar billede lone_a_p Praktikant
21. marts 2007 - 16:18 #23
OK, det gør jeg så :)

Og du må meget gerne skrive det med AJAX herinde :)
Avatar billede olebole Juniormester
23. marts 2007 - 14:07 #24
function XmlHttp() {
    if (XmlHttp._transport) return XMLHttp._transport();
    if (window.XMLHttpRequest) {
        XmlHttp._transport = function(){ return new XMLHttpRequest() };
    }
    else if (window.ActiveXObject) {
        var o = null, aAX;
        aAX = [
            "MSXML2.XMLHTTP.5.0",
            "MSXML2.XMLHTTP.4.0",
            "MSXML2.XMLHTTP.3.0",
            "Msxml2.XMLHTTP",
            "Microsoft.XMLHTTP"
        ];
       
        for (i=0; i<aAX.length; i++) {
            try {
                o = new ActiveXObject(aAX[i]);
                if (o) {
                    XmlHttp._transport = function(){ return new ActiveXObject(aAX[i]) };
                    o = null;
                    break;
                }
            }
            catch(e){};
        }
    }
    return XmlHttp._transport ? XmlHttp._transport() : false;
}

// Anvendelse:
var oReq = XmlHttp();
// Herfra sætter du event-handler og bruger open- og send-metoderne, som du plejer  =)
Avatar billede olebole Juniormester
23. marts 2007 - 14:09 #25
PS: Funktionen returnerer false, hvis browseren ikke understøtter nogen af request-objekterne
Avatar billede lone_a_p Praktikant
23. marts 2007 - 14:45 #26
ok - takker! :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis