.. sectionauthor:: malte .. _ref-infrastruktur: ############################################################################### Messages - Maongo kommuniziert mit der Umwelt ############################################################################### Kommunikation zwischen Maongo und der einbindenden Host-Umgebung ============================================================================== Häufig wird eine Maongo-Anwendung innerhalb einer anderen Anwendung ausgeführt. Dies kann eine HTML-Seite sein, eine Flex-Anwendung oder eine Java-Anwendung. Um die Kommunikation zwischen der Host-Umgebung und der Maongo-Anwendung zu ermöglichen, stellt Maongo definierte Schnittstellen zur Übermittlung von Nachrichten bereit. Diese ``Messages`` bestehen aus einem ``MessageName`` und einer beliebigen Anzahl von Parametern als Nutzlast. Dabei dient der ``MessageName`` zur Identifizierung der Nachricht und kann genutzt werden um die Nachricht in der Maongo-Anwendung bzw. der Host-Umgebung an die richtige Stelle weiterzugeben. Setup der Host-Umgebung =============================================================================== Um diese Funktionalität nutzen zu können muss die Host-Umgebung entsprechende Funktionen (Javascript bzw. Java) implementieren. Die Funktionen werden bspw. von den Maongo-Compilern für HTML und Flash schon in die generierten HTML-Seiten integriert. **HTML-Ausspielung** Der folgende Code-Abschnitt erlaubt den Zugriff auf die Maongo-Anwendung über die Kurzfassung ``document.mymaongoapp`` indem eine Referenz auf die erzeugte Applikation an der entsprechenden Stelle im DOM-Tree abgelegt wird. :: ... var app = new mymaongoapp(...); // setup for messaging document.mymaongoapp = app; ... Hiermit wird eine Javascript-Funktion als Handler für ``Messages`` aus der Maongo-Anwendung registriert. :: ... // setup message handler document.mymaongoapp.onMessage = messageCallback; ... **in HTML eingebundener Flashfilm** Der folgende Javascript-Code-Abschnitt erlaubt den Zugriff auf die Maongo-Anwendung über die Kurzfassung ``document.mymaongoapp`` indem eine Referenz auf das eingebundene SWF-File an der entsprechenden Stelle im DOM-Tree abgelegt wird. :: ... //allow external messaging to app document.mymaongoapp = document.getElementById("mymaongoapp"); ... Da der Handler für ``Messages`` aus der Maongo-Anwendung erst auf dem Flashfilm registriert werden kann, wenn dieser geladen ist und das Javascript-API initialisiert hat, wird eine definierte Funktion in der HTML-Seite angelegt, welche den Namen des Handlers zurückliefert. Diese Funktion wird vom Flashfilm aufgerufen, sobald dieser vollständig geladen ist. :: //called from maongo after loading function sendMessageHandler(){ document.mymaongoapp.registerMessageHandler("messageCallback"); } Der Zugriff des Flashfilms auf die HTML-Seite mittels Javascript wird über den Parameter ``allowScriptAccess`` in der HTML-Einbindung gesteuert. Dieser ist per default mit dem Wert ``sameDomain`` gesetzt. Dies bedeutet das der Zugriff nur erlaubt ist, wenn Flashfilm und HTML-Dokument von der gleichen Domain ausgeliefert werden. Sollte dies nicht der Fall sein, so kann der Wert auf ``always`` gesetzt werden. :: bzw. :: **Flex-Anwendung** Um Nachrichten aus der Maongo-Anwendung in der Flex-Umgebung zu erhalten, muss eine Funktion der Flex-Umgebung als Message-Handler registriert werden :: maongoComponent.registerMessageCallback(messageCallback); **Java-Anwendung** *TODO* Nachrichten an eine Maongo-Anwendung schicken =============================================================================== Nachrichten werden an die Maongo-Anwendung geschickt, indem auf der Anwendung die Funktion ``message(messageName, parameterList)`` aufgerufen wird. Dabei ist die Anzahl der Parameter beliebig. Diese müssen allerdings in einen Array verpackt werden. **HTML-Ausspielung** :: send Message to Maongo **in HTML eingebundener Flashfilm** :: send Message to Maongo **Flex-Anwendung** Aus einer Flex-Anwendung werden Nachrichten an die Maongo-Anwendung geschickt, indem die MaongoFlexComponent genutzt wird. :: maongoComponent.message("messageName",["hallo welt,"klaus",23]); **Java-Anwendung** *TODO* Nachrichten aus einer Maongo-Anwendung empfangen =============================================================================== Wenn Nachrichten aus Maongo verschickt werden sollen, so kann dieses innerhalb des MAD-Dokument auf jedem Widget mittels einer Action geschehen. :: this.externalMessage("externalMessageName", ["dieter", 56]); Die Nachricht wird in der Host-Umgebung an den registrierten Message-Handler weitergegeben und kann dort entsprechend weiterverarbeitet werden. **HTML/in HTML eingebundener Flashfilm** :: // sample implementation for messageCallback function messageCallback(messageName, args){ alert("callback: " + messageName + " arguments: " + args); } **Flex** :: public function messageCallback(...rest):void{ trace("Message from Maongo: " + rest); } **Java-Anwendung** *TODO* Beispiel =============================================================================== **MAD-Dokument** :: this.parent.Display.Text = "reset"; this.externalMessage("externalMessage", ["parameter1",56]); this.Display.Text = "Message received: " + args; **HTML Ausspielung** :: No Title send message to Maongo
**Einbindung der Flash-Ausspielung** :: No Title send message to Maongo
Dieser Inhalt ist nur mit dem Adobe-Flash-Plugin sichtbar.
<