[Flex/PHP] "Chatbox"

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben nog niet zo lang bezig met Flex en ik wou even experimenteren met DataGrids. Hiervoor wou ik een soort van chatbox maken die het gesprek toont via een datagrid.
Echter zit ik met een klein probleempje waar ik niet echt een antwoord op vind.

Ik zou dus graag hebben dat mensen niet moeten op de Verzenden button klikken om te "Refreshen".. Want als ik nu met 2 mensen op een verschillende computer zit en de ene typt iets, zal dit niet automatisch op de andere zijn scherm terecht komen.

Mijn code ziet er zo uit:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" applicationComplete="{userRequest.send()}" layout="absolute">

    <mx:HTTPService id="userRequest" url="php/chat.php" useProxy="false" method="POST">
        <mx:request xmlns="">
            <username>{username.text}</username>
            <bericht>{bericht.text}</bericht>
        </mx:request>
    </mx:HTTPService>
    
    <mx:TitleWindow width="800" height="600" layout="absolute" horizontalCenter="0" verticalCenter="0">
    
        <mx:Form x="10" y="418" width="770" height="142">
            <mx:FormItem label="Naam:">
                <mx:HDividedBox width="100%">
                    <mx:TextInput id="username"/>
                </mx:HDividedBox>
            </mx:FormItem>
            <mx:FormItem label="Bericht:" width="721" height="45">
                <mx:HDividedBox width="100%">
                    <mx:TextArea width="640" height="43" maxChars="210" id="bericht" />
                </mx:HDividedBox>
            </mx:FormItem>
            
            <mx:Button label="Verzenden" click="{userRequest.send(),this.bericht.text=''}"/>
            
        </mx:Form>
        <mx:DataGrid id="dgUserRequest" x="10" y="10" dataProvider="{userRequest.lastResult.chats.chat}" 
            width="760" height="400" resizableColumns="false" sortableColumns="false">
            <mx:columns>
                <mx:DataGridColumn width="75" headerText="Naam" dataField="username"/>
                <mx:DataGridColumn headerText="Bericht" dataField="bericht"/>
            </mx:columns>
        </mx:DataGrid>
    </mx:TitleWindow>
    
</mx:Application>


Dus mijn vraag nu, weet iemand hoe ik dit "Automatisch laat refreshen"? Ik vermoed dat het in de <mx:Application....> regel moet voor het "Refreshen", maar ik heb geen idee wat er juist in moet.

Mvg,
Jelmer

[ Voor 6% gewijzigd door Verwijderd op 02-12-2008 19:41 ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

En Google's kleine 105000 zoekresultaten gaven je geen oplossing?

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb gegoogled, maar ik kom er niet echt wijs uit. Ook zit er veel tussen over AJAX, wat dit dus niet is.. M'n HTTPService zit namelijk in mijn flexbuilder geprogrammeerd.
Ik ben al op Flex Timer uitgekomen, maar ook daar vind ik niet echt iets wat ik kan gebruiken.

Het kan zijn dat dit het natuurlijk is maar ik kan het niet echt toepassen.

Mvg,
Jelmer

Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00
private function refresh():void {
userRequest.send();
setTimeOut(refresh(), 1000);
}

uit de losse pols dus kan fouten bevatten :P

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmm, en waar moet ik dit plaatsen? Ik ben hier echt nog een leek in, ik ben er pas sinds eergisteren mee bezig.

Ik heb nu het bestandje "Chatten.mxml" maar als ik het daar bovenaan plaats krijg ik een error:
"Content is not allowed in prolog."

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

Eeh, dan ga je dat uitzoeken? Het is hier geen afhaalbalie voor code ;)
Dus ga er echt zelf eens mee aan de slag. Als het dan echt niet lukt meld dan hier wat je nu zelf al hebt geprobeerd, wat daar niet mee lukte, eventuele foutmeldingen e.d. (zie PRG Beleid waarin dat netjes staat uitgelegd). We willen je best helpen maar we gaan het niet volledig voor je doen natuurlijk, dan huur je maar iemand in ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik had ondertussen al ietwat gevonden, namelijk dat een <mx:Script> code kan toevoegen. Had dit hier nog niet vermeld.

Voor mensen die eventueel met hetzelfde kampen, ik vermoed dat het met de functie Timer() zal moeten gedaan worden aangezien hij bij setTimeOut een fout weergeeft.

Bedankt in ieder geval voor de reacties.

Mvg,
Jelmer

Acties:
  • 0 Henk 'm!

  • rewind.
  • Registratie: Oktober 2001
  • Laatst online: 17-09 11:00

Acties:
  • 0 Henk 'm!

  • Abductee
  • Registratie: Oktober 2007
  • Laatst online: 20-11-2024
Los van je eigenlijke vraag, kan je voor een chatbox (of iets anders wat asynchrone messages moet kunnen verzenden/ontvangen) beter werken met producers en consumers. Door deze twee te combineren kan je dan berichten verzenden met een producer, waarna een (of meerdere) consumer(s) ze dan ontvangen. Wanneer deze consumer iets ontvangt, wordt er een event afgevuurd, waar je dan weer een functie aan kan hangen om de data aan de datagrid toe te voegen.

Hiervoor moet je wel gebruik maken van BlazeDS of LCDS. BlazeDS is het open source alternatief voor LCDS, waarvoor je een license moet aankopen.

Hier vind je een testdrive, als je die bekijkt zullen een aantal dingen al veel duidelijker worden.

Hier vind je ook een uitgewerkt voorbeeld van hoe pub/sub in zen werk gaat in Flex.

Veel plezier ermee, en als er nog problemen zijn, dan horen we het wel weer.

[ Voor 5% gewijzigd door Abductee op 03-12-2008 17:24 ]

Pagina: 1