Frage

Wie funktioniert Flash-Kommunikation mit Diensten / scripts auf Servern über AMF ?

In Bezug auf die AMF Bibliotheken für Python / Perl / PHP, die einfacher zu entwickeln als .NET / Java:

  • Sie sie Skriptdateien ausführen, sobald Flash eine Remote Procedure Call sendet?
  • oder kommunizieren sie über Steckdosen, um Skript-Klassen, die als Dienste ausgeführt werden?

Im Hinblick auf typische AMF Funktionalität:

  • Wie werden die Daten übertragen? ist es durch Methodenargumente, die automatisch serialisiert werden?
  • Wie können Server " schieben " Kunden? Sie Flash-Filme auf einem Sockel verbinden haben?

Vielen Dank für Ihre Zeit.

War es hilfreich?

Lösung

Die einzige AMF Bibliothek ich vertraut bin, ist PyAMF , die mit bisher zu arbeiten war großartig. Hier sind die Antworten auf Ihre Fragen zur PyAMF:

  • Ich könnte mir vorstellen, können Sie es als Skript ausführen können (meinst du wie CGI?), Aber die einfachste ist IMO eine App-Server speziell für AMF Anfragen einzurichten

  • die einfachste Art und Weise zu definieren, Funktionen in reinem Python ist, die PyAMF wickelt eingehende / ausgehende AMF-Daten serialisieren

  • Sie können über Sockets kommunizieren, wenn das, was Sie tun müssen, aber auch hier ist es die einfachste reine Python-Funktionen zu verwenden; eine Verwendung für Steckdosen ist eine offene Verbindung und ‚Push‘ Daten zu Kunden zu halten, finden Sie unter diesem Beispiel

Hier ist ein Beispiel von drei einfachen AMF-Diensten auf localhost:8080 serviert:

from wsgiref import simple_server
from pyamf.remoting.gateway.wsgi import WSGIGateway

## amf services ##################################################

def echo(data):
    return data

def reverse(data):
    return data[::-1]

def rot13(data):
    return data.encode('rot13')

services = {
    'myservice.echo': echo,
    'myservice.reverse': reverse,
    'myservice.rot13': rot13,
}

## server ########################################################

def main():
    app = WSGIGateway(services)

    simple_server.make_server('localhost', 8080, app).serve_forever()

if __name__ == '__main__':
    main()

Ich würde PyAMF auf jeden Fall empfehlen. Schauen Sie sich die Beispiele zu sehen, was es fähig ist und was der Code aussieht.

Andere Tipps

  

Wie funktioniert Flash-Kommunikation mit Diensten / scripts auf Servern über AMF?

Die Daten werden über eine TCP / IP-Verbindung übertragen. Manchmal wird eine bestehende HTTP-Verbindung verwendet wird, und in anderen Fällen eine neue TCP / IP-Verbindung wird für die AMF Daten geöffnet. Wenn die HTTP oder zusätzliche TCP-Verbindungen geöffnet werden, wird die Sockets-Schnittstelle wahrscheinlich verwendet. Die AMF fährt auf jeden Fall über eine TCP-Verbindung von einer Art, und die Sockets-Schnittstelle ist praktisch die einzige Möglichkeit, eine solche Verbindung zu öffnen.

"Daten", die übertragen wird, bestehen aus ECMA-Script (Javascript (tm)) Datentypen wie "integer", "string", "Objekt", und so weiter.

Für eine technische Spezifikation, wie die Objekte in binären codiert sind, hat Adobe eine Spezifikation veröffentlicht: AMF 3.0 Spec bei Adobe.com

Im Allgemeinen ist die Art und Weise ein AMF-mit Client / Server-System funktioniert, ist so etwas wie folgt aus:

  1. Der Client zeigt eine Benutzeroberfläche und öffnet eine TCP-Verbindung zum Server her.
  2. Der Server einige Daten an den Client sendet, die die Benutzeroberfläche aktualisiert.
  3. Wenn der Benutzer einen Befehl macht, sendet der Client einige Daten an den Server über die TCP-Verbindung.
  4. Wiederholen Sie die Schritte 2-3, bis der User-Exits.

Zum Beispiel, wenn der Benutzer eine klickt „E-Mail senden“, um in der Benutzeroberfläche, dann der Client-Code kann dies tun:

public class UICommandMessage extends my.CmdMsg
{
   public function UICommandMessage(action:String, arg: String)
   {
      this.cmd = action;
      this.data = String;
   }
}

Dann später:

UICommandMessage msg = new UICommandMessage("Button_Press", "Send_Mail");
server_connection.sendMessage(msg);

in der Server-Code, der Server ist die Überwachung der Verbindung als auch für eingehende AMF-Objekt. Er empfängt die Nachricht und übergibt die Steuerung an eine geeignete Antwortfunktion. Dies wird als „eine Nachrichtens“.

Mit mehr Informationen über das, was Sie versuchen zu erreichen, könnte ich Ihnen weitere nützliche Details.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top