Kommunikation mit Webserver über Flash

FunkyMonkey

Mitglied
Hallo

das Problem ist etwas tricky.

Ein Mikroelektroniker baut eine Maschine die über das Internet gesteuert werden kann. Momentan verwendet er dazu einen Router auf dem Linux läuft, mit installiertem Webserver und ein Java-Applet.

Man loggt sich wie auf jede andere gewöhnliche Homepage in den Webserver ein und hat als Steueroberfläche das Java-Applet.

Nun soll es so sein, das die Steuerung über ein SWF auf einer x-beliebigen Internetseite läuft.

Das SWF muss dabei mit der Maschine kommunizieren...Lösungsansatz: XML

Die Sache ist die: Ist es technisch machbar, dass das Java-Applet auf dem Webserver der Maschine mit dem SWF auf einer x-beliebigen Website kommuniziert? Genauer gesagt läuft das SWF ja nicht auf dem Webserver sondern im Browser des Clients.

Dabei ist wichtig, das die Maschine von sich aus Daten an das SWF senden kann, und dieses die Daten empfängt und sofort verarbeitet und entsprechend anzeigt. Etwa eine Statusänderung oder ähnliches. Anders herum muss das SWF an das Java-Applet Daten senden können (in Form von XML wahrscheinlich), und das Java-Applet verarbeitet diese entsprechend.

Mir würden irgendwelche weiterführenden Dokus oder Links zu relevanten Tutorials / Diskussionen etc. schon sehr helfen... es geht erstmal darum ob das so mit dem Java-Applet und dem SWF machbar ist... Außerdem steht noch die Frage im Raum, ob man das ganze auch ausschließlich mit Flash lösen kann, also statt dem JavaApplet auf dem Webserver der Maschine das Flash-SWF......bezweifel im Moment aber, dass das Flash-SWF die Ports und I/O's auslesen kann.

Freue mich über jeden Tipp!
 
Hi,

prinzipiell kannst Du z.B. sowohl mit dem LoadVars- als auch mit dem XML-Objekt Daten an den Server senden (und auch von dort empfangen).

Wenn Du allerdings Daten vom Server zum Client pushen willst (bei Statusänderung), müsstest Du eine persistente Verbindung mit dem XMLSocket-Objekt aufrecht erhalten. Hierzu wird allerdings ein Server benötigt, der diese Verbindungen unterstützt (z.B. Flash Media Server).

Alternativ (bei einer weniger zeitkritischen Anwendung) könntest Du periodisch (z.B. mit einem Intervall) Anfragen an den Server schicken, und die Antwort (z.B. ein XML-Baum) verarbeiten.

Gruß
.
 
Und in welcher Form würde die Übergabe der Daten an das SWF erfolgen?

Ich stelle mir das gerade so vor, das der Server (also die Maschine) hier den Quelltext eines XML-Baums anzeigt, und das Flash "besucht" quasi die "Website" und zieht sich diesen XML Quellcode.

Das aktuell installierte Java-Applet hat also diese "persistente Verbindung" zum Client? Denn laut dem Entwickler der Maschine ist das im moment so, das Statusänderungen unmittelbar im Webbrowser sichtbar werden, quasi wie ein Java-Chat bei dem neue Nachrichten auch sofort auftauchen...
 
Ich stelle mir das gerade so vor, das der Server (also die Maschine) hier den Quelltext eines XML-Baums anzeigt, und das Flash "besucht" quasi die "Website" und zieht sich diesen XML Quellcode.
Ja, Du kannst z.B. mit der load-Methode des XML-Objekts einen vom Server ausgegebenen XML-Baum einlesen:
Code:
var xm = new XML();

xm.ignoreWhite = true;

xm.load("http://deinServer.com/ausgabe.jsp");
Angenommen, der Server (wo vermutlich ein Servlet o.ä. läuft) gibt folgendes aus:
XML:
<stamp value="1123456" />
<state dir="x" angle="90" speed="2" />
<state dir="y" angle="72" speed="-1" />
- dann lassen sich die Daten so verarbeiten:
Code:
xm.onLoad = function() {
  parse(this.childNodes);
}

function parse(obj) {
  for (var i=0; i<obj.length; i++) {
    switch(obj[i].nodeName) {
      case "stamp": timestamp = parseInt(obj[i].attributes.value, 10); break;
      case "state":
        trace("Achse:  " + obj[i].attributes.dir;
        trace("Winkel: " + obj[i].attributes.angle;
        trace("Speed: " + obj[i].attributes.speed;
        break;
    }
   }
}

Das aktuell installierte Java-Applet hat also diese "persistente Verbindung" zum Client?
Davon ist wohl auszugehen. Fragen zu Applets/Servlets und Servertechnologien stellst Du aber besser in den betreffenden Foren.

Ich kann Dir zwar sagen, wie das XMLSocket-Objekt im Prinzip einzusetzen ist, mit der Serverseite habe ich allerdings keine Erfahrungen.

Gruß
.
 
Zuletzt bearbeitet von einem Moderator:
Danke Dir für die Infos. Das heisst, Flash müsste sich in dem Fall oben selbst per Request immer nach dem aktuellsten Stand erkundigen und dann ggf. bei Änderung die XML reinlesen.

Habe mir vorhin sagen lassen das es schon irgendwie machbar sein soll das zwischen einem Flash-SWF und einem Javaprogramm eine persistente Verbindung hergestellt wird, ähnlich wie von einem Java-Programm zum Applet...

Werde mich da nochmal an die Experten für die Serverseite wenden. Danke :)
 
Habe mir vorhin sagen lassen das es schon irgendwie machbar sein soll das zwischen einem Flash-SWF und einem Javaprogramm eine persistente Verbindung hergestellt wird, ähnlich wie von einem Java-Programm zum Applet...
Sagte ich vorhin bereits schon: Lies mal in der Doku unter XMLSocket-Klasse nach. ;)

Gruß
.
 

Neue Beiträge

Zurück