Avatar billede kasseper Nybegynder
02. februar 2001 - 12:54 Der er 27 kommentarer og
1 løsning

Lidt chat problemer

Hej alle sammen.
Jeg vil prøve at lave en chat.
så jeg har brug for et ret  grundlæggende svar på et ret grundlæggende problem.

Krav :
--------------------------------------------------------------------
Jeg vil helst ikke anvende en database, til at opbevare de beskeder der bliver postet.
Selve chatten kommer til at bestå af 3 frames, hvor frame1 er der hvor beskederne står, frame2 er der hvor beskederne skrives, og frame 3 bruges til noget helt andet....

JEG VIL IKKE HAVE ET LINK TIL EN CHAT DER ER LAVET...HVIS I VIL BRUGE DEM SOM EKSEMPEL SÅ KLIP DET UD I VIL BRUGE OG POST DET HER MED EN FORKLARING.....
--------------------------------------------------------------------
*************************************
Hvordan skal man opdatere frame1 hos bruger1, når bruger2 indtaster en besked? (uden at bruger1 skal trykke på opdater eller noget...)
Jeg har læst mig frem til at man kan gøre det når en Application variabel opdateres, men hvordan gøres det rent praktisk.Og hvordan bevares de gamle beskeder...?


Kasseper

P.S: der skal jo nok både bruges javascript og asp kode, men jeg vidste ikke lige hvilken kategori jeg skulle vælge...

Avatar billede kasseper Nybegynder
02. februar 2001 - 16:25 #1
Er der virkelig ingen der kan forklare mig det ????
Hvis i downloader denne her :
http://www.netcoders.dk/download.asp?mode=dl&download_id=602
og kigger hvordan han gør, også forklare mig det, så skulle den være hjemme.
Problemet er bare at jeg ikke kan gennemskue hans kode...Så er der ikke en der vil gøre forsøget..?
Avatar billede parazite Nybegynder
02. februar 2001 - 16:35 #2
Hvorfor ikke bruge en Meta Refresh, så den automatisk opdaterer hvert 3 - 5 sekund? Det gør andre chatsteder! :o)

Kan godt finde noget kode hvis det er.
Avatar billede parazite Nybegynder
02. februar 2001 - 16:36 #3
<meta http-equiv=\"Refresh\" content=\"sekunder; URL=adresse\">

Smides i <head></head>
Avatar billede kasseper Nybegynder
02. februar 2001 - 16:38 #4
Jeg vil gerne overveje dit svar, problemet er bare at jeg helst ikke vil benytte en database, hvilket dit svar jo inkludere eller hva ????
Avatar billede parazite Nybegynder
02. februar 2001 - 16:40 #5
Hvordan mener du? Den text du smider i frame1 skal bare tilføjes    <meta http-equiv=\"Refresh\" content=\"sekunder; URL=adresse\">. Du kan evt. se på www.parazite.f2s.com/chat/ , hvor der bruges samme metode til at opdatere og det hele kører på textfiler.
Avatar billede parazite Nybegynder
02. februar 2001 - 16:47 #6
Tror heller ikke løsningen med updateOnAction vil virke fornuftigt. Har du blot 20 aktive brugere i din chat, så vil chatten opdatere næsten hvert sekund, hvilket eksempelvis mit 56 K modem IKKE kan klare! :o)
Avatar billede erikjacobsen Ekspert
02. februar 2001 - 19:35 #7
Hvorfor opdatere den frame, hvor beskedderne vises. Det \"blinker\" og er træls,
og ikke nødvendigt: http://www.bioalice.dk/chat
Avatar billede parazite Nybegynder
02. februar 2001 - 19:44 #8
erikjacobsen : Nice chat! Dog er der et problem med hastigheden - ved ikke om det bare er med mit 56K, men DAMN den er sloooooow at starte op. Ellers fed scripting!
Avatar billede erikjacobsen Ekspert
02. februar 2001 - 21:08 #9
Baggrundsbilledet er umådeligt stort. Derfor måske?
Avatar billede kasseper Nybegynder
02. februar 2001 - 23:17 #10
Jamen erikjacobsen det er jo lige det jeg skal bruge, så mangler vi bare de gyldne ord....HVORDAN ???
Avatar billede erikjacobsen Ekspert
02. februar 2001 - 23:38 #11
Du kan finde teknikken på http://www.hotscripts.com
Vælg PHP og Chats, og så hedder den noget med Mazen....så
vidt jeg husker.
Avatar billede kasseper Nybegynder
03. februar 2001 - 08:52 #12
NÆB, jeg har ikke en eneste forstnd på PHP....
Jeg skal bruge noget ASP, helst, ellers må jeg jo sætte mig ind i PHP.

Jeg vil jo altså helst have lidt kode på bordet og en forklaring.

ANYWAY, så har jeg stadig brug for at kunne opdatere en frame når der er en ændring i en Application variabel..... Er det ikke det du mener med updateOnAction Parazite ??? Hvordan virker det ????
Avatar billede tdaugaard Nybegynder
03. februar 2001 - 16:49 #13
kasseper:> hvis du forøvrigt laver en chat der opdater sig selv hvert 3-5 sekund kan jeg på det kraftigste anbefale at du bruger et layer (<div>) og noget javascript i en skjult frame, til at opdatere indholdet i chatten .. ellers tror jeg dine brugere bliver lidt synsforstyrrede med alt det \"blinkeri\"
Avatar billede kasseper Nybegynder
05. februar 2001 - 10:31 #14
Buuhuuuuuu:( Er der slet ikke nogen der gider at give mig lidt kode og forklaring.....
Jeg er blevet lidt forviret :
Jeg skal lave det med layers/div tags, men hvordan kan man nu det ???
Hvis en anden joiner chatten, vil det så ikke være tomt, når man kommer ind ??
Og hvordan ser bruger2 hvad bruger1 skriver, uden at siden opdateres.....?

Jeg er sq lidt på bar bund nu ???
Desuden skal jeg også bruge den opdaterings rutine, der opdatere en frame, når der er en ændring i en application variabel, er der ikke en der har den lige ved hånden....?
Avatar billede tdaugaard Nybegynder
05. februar 2001 - 18:09 #15
kasseper:> du skal lave det som følger:

et frameset:

rows=\"*,130,0\"

1 row: indhold
2 row: der hvor man skriver teksten, form target=\"3 row\'s frame name\"
3 row: en skjult frame der opdateres hvert 3 sekund (eller deromkring) vha. f.eks. et META tag

på indholdssiden laver du et <div> layer der er højde/bredde 100% og ingenting i det, husk et ID på det. f.eks. \"content\"

2 row\'s siden laver du en normal form som sendes til f.eks. \"update.asp\" med target i den skjulte frame.

i den skjulte frame laver du det ASP der skal processe det input brugeren har skrevet, desuden skal der indsættes kode (javascript) der automatisk opdaterer det <div> layer der ligger i frame 1.

jeg har noget kode jeg selv bruger i en chat (javascript koden...) hvis du vil se den må du sige til.
Avatar billede tdaugaard Nybegynder
05. februar 2001 - 18:10 #16
kasseper:> lige et tillæg: \"Desuden skal jeg også bruge den opdaterings rutine, der opdatere en frame, når der er en ændring i en application variabel, er der ikke en der har den lige ved hånden....?\"

det gør man autokatisk når den skjulte frame opdateres
Avatar billede kasseper Nybegynder
05. februar 2001 - 22:00 #17
Jeg vil da meget gerne se dit javascript tdaugaard !!!

Der er dog en ting jeg ikke lige forstår.....I denne her :
http://www.netcoders.dk/download.asp?mode=dl&download_id=602
(som er den aspchat jeg har snakket om før...)
Skriver han at han opdatere sin frame hvert .90 sekund, eller når der er noget i en app. variabel...Hvordan det ?????

P.S: Det var en fin forklaring....Tak
Avatar billede tdaugaard Nybegynder
05. februar 2001 - 22:42 #18
kasseper:> thought so :o)

Her er det script jeg selv har brugt i et spørgsmål her på eksperten for nylig..
NOTE: virker kun i IE!

Opdatering af en frame hvert 900 ms er ikke umuligt. Man laver det med java script:

setTimeout(\"location.reload();\", 900);

men det vil næsten reloade hele tiden ..

<%
    strTekst = \"<font size=\'1\'face=\'Verdana\'>Du har optjent \" & datediff(\"n\", session(\"loggetind\"),now) + session(\"point\") & \" point.</font><br>\"

    For x = 1 To 20
        strTxt = Application(\"samtale_\" & x & \"_bruger_\" & session(\"Chatuser\"))
        strTxt = Replace(strTxt, Chr(39), \"\\\'\")
        strTxt = Replace(strTxt, Chr(34), \"&#34;\")

        strTekst = strTekst & strTxt & \"</b></i><br>\"
    next

    strSelUsers = \"\"
    intJSCount = 1
    For i = 1 To 20
        If Application(\"chatbruger_\" & i) > \"\" Then
            If Application(\"chatbruger_\" & i) <> Session(\"chatbruger\") Then
                strSelUsers = strSelUsers & \"items[\" & intJSCount & \"] = \"\"new Option(\'\" &  Application(\"chatbruger_\" & i) & \"\', \'\" & i & \"\')\"\";\" & vbCrLf

                intJSCount = intJSCount + 1
            End If
        end if
    Next
%>
<html>
<head>
    <meta http-equiv=\"refresh\" content=\"3\">
    <script language=\"JavaScript\">
        <!--
            var ie55=(parseInt(navigator.appVersion)>4 && parseInt(navigator.appMinorVersion)>4) ? true:false;
            var contentTimer;
            var userTimer;
            var expirTimer;
            var msgTimer;
   
            window.onerror=handleerr;
       
            function handleerr() {
                contentTimer=setTimeout(\"showcontent();\", 100);
                msgTimer=setTimeout(\"update_users();\", 100);
            }
       
            function showcontent() {
                var cnt = \"<%=strTekst%>\";

                if (parent.samtale.document.readyState == \"complete\") {
                    parent.samtale.content.innerHTML = cnt;
                    clearTimeout(contentTimer);
                } else {
                    contentTimer=setTimeout(\"showcontent();\", 100);
                }
            }

            function update_users() {
                if (ie55) {
                    var items = new Array();

                    if (parent.skriv.document.readyState == \"complete\") {
                        items[0] = \"new Option(\'Alle brugere\', \'0\')\";
                        <%=strSelUsers%>

                        var selIndex = parent.skriv.form1.brugere.selectedIndex;

                        if (selIndex > -1 ) var selectedUser = parent.skriv.form1.brugere.options[selIndex].value;
                        if (selIndex==-1) selIndex=0;
                        if (selIndex > parent.skriv.form1.brugere.options.length-1) selIndex=0;

                        parent.skriv.form1.brugere.options.length = 0;
                               
                        for (var index=0; index<items.length; index++) {
                            parent.skriv.form1.brugere.add(eval(items[index]));
                        }
                               
                        for (var index=0; index<parent.skriv.form1.brugere.options.length;index++) {
                            if (parent.skriv.form1.brugere.options[index].value == selectedUser) selIndex = index
                        }

                        parent.skriv.form1.brugere.selectedIndex=selIndex;
                        clearTimeout(msgTimer);
                    } else {
                        msgTimer=setTimeout(\"update_users();\", 100);
                    }
                } else {
                    clearTimeout(msgTimer);               
                }
            }
       
<%    if datediff(\"n\", session(\"sidstskrevet\"), now) = 10 then %>
            top.location.href=\"logaf.asp?logaf=auto\";
<%    else %>
            showcontent();
            update_users();
<%    end if %>
        -->
    </script>
Avatar billede kasseper Nybegynder
06. februar 2001 - 11:17 #19
Du har ikke en lille ide til hvordan man opdatere den skjulte frame når der er en ændring i en application variabel...?
Avatar billede tdaugaard Nybegynder
06. februar 2001 - 15:42 #20
kasseper:> det kan ikke lade sig gøre. Jeg har kigget på den der chat du fortalte om (hvilken forøvrigt stinker!) og den opdaterer kun ved fast interval og når der bliver sendt noget. Dvs. DIN skærm opdaterer når du sender noget, mens andres først bliver når de sender eller ved intervallet.
Avatar billede tdaugaard Nybegynder
06. februar 2001 - 15:44 #21
kasseper:> nu har jeg forøvrigt besluttet mig for at lægge min egen chat til fri download, og det kan muligvis være du kan bruge det til noget, så du kan hente den på http://www.tdaugaard.dk/x/easychat-2.5-mdb.ace (brug WinACE til at unace\'e - www.winace.com)
Avatar billede kasseper Nybegynder
06. februar 2001 - 15:50 #22
OK, tdaugaard. Jeg syntes altså også at det stred mod al den logik jeg har lært. At serveren kunne opdatere clienten, uden clienten havde noget at sige.....!!!
Jeg arbejder lige lidt på sagen, vender tilbage med point posen lidt senere, tak for hjælpen....;)
Avatar billede tdaugaard Nybegynder
06. februar 2001 - 15:54 #23
kasseper:> \"At serveren kunne opdatere clienten, uden clienten havde noget at sige.....!!!\"

det er netop det den IKKE kan.
Serveren kan ikke \"sende\" et \"reload\" request til f.eks. IE. Og hvis den kunne ville der nok komme en \"The server has requested a page reload. Accept ?  [YES] [NO]\" box ..
Avatar billede kasseper Nybegynder
06. februar 2001 - 16:01 #24
det var også det jeg mente.....Det ville ikke være logisk !!!
Avatar billede tdaugaard Nybegynder
06. februar 2001 - 16:03 #25
kasseper:> nope .. det ville være lidt skod :-( men nu skal jeg lade dig få fred til at kigge på det du har nu.
Avatar billede tdaugaard Nybegynder
11. februar 2001 - 12:40 #26
Nåå .. kasseper .. er du ved a have kigget på det ?
Avatar billede kasseper Nybegynder
12. februar 2001 - 08:29 #27
SORRY ;(....
Jeg var så optaget af at optimere min chat, så jeg glemte alt om mit spg.....
Jeg hader selv når jeg sidder og venter og der ikke sker en skid,..
Og så selvfølgelig tak for hjælpen...


Kasseper
Avatar billede tdaugaard Nybegynder
12. februar 2001 - 12:03 #28
kasseper:> *S* det er helt ok; det er jo ikke værre end som her at man lige kan skrive en kommentar :-)

Det var så lidt :-)
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
Kurser inden for grundlæggende programmering

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