Domanda

In che modo Flash comunica con servizi / script sui server tramite AMF ?

Per quanto riguarda le librerie AMF per Python / Perl / PHP che sono più facili da sviluppare di .NET / Java:

  • eseguono file di script ogni volta che Flash invia una chiamata di procedura remota?
  • o comunicano tramite socket, alle classi di script in esecuzione come servizi?

Per quanto riguarda la funzionalità AMF tipica:

  • Come vengono trasferiti i dati? è tramite argomenti di metodo che vengono automaticamente serializzati?
  • Come possono i server " spingere " ai clienti? i filmati Flash devono essere collegati su una presa?

Grazie per il tuo tempo.

È stato utile?

Soluzione

L'unica libreria AMF con cui ho familiarità è PyAMF , con cui è stato fantastico lavorare finora. Ecco le risposte alle tue domande per PyAMF:

  • Immagino che tu possa eseguirlo come uno script (intendi come CGI?), ma l'IMO più semplice è configurare un server app appositamente per le richieste AMF

  • il modo più semplice è definire le funzioni in puro pitone, che PyAMF racchiude per serializzare i dati AMF in entrata / uscita

  • puoi comunicare tramite socket se è quello che devi fare, ma, ancora una volta, è il più semplice da usare con le funzioni Python; un uso per i socket è mantenere una connessione aperta e "inviare" i dati ai client, vedere questo esempio

Ecco un esempio di tre semplici servizi AMF offerti su localhost: 8080 :

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()

Consiglio vivamente PyAMF. Dai un'occhiata agli esempi per vedere di cosa è capace e che aspetto ha il codice.

Altri suggerimenti

  

In che modo Flash comunica con servizi / script sui server tramite AMF?

I dati vengono trasferiti su una connessione TCP / IP. A volte viene utilizzata una connessione HTTP esistente e in altri casi viene aperta una nuova connessione TCP / IP per i dati AMF. Quando vengono aperte le connessioni HTTP o TCP aggiuntive, viene probabilmente utilizzata l'interfaccia socket. L'AMF viaggia sicuramente su una connessione TCP di qualche tipo e l'interfaccia dei socket è praticamente l'unico modo per aprire tale connessione.

I " dati " che viene trasferito è costituito da tipi di dati script ECMA (Javascript (tm)) come "intero", "stringa", "oggetto" e così via.

Per una specifica tecnica di come gli oggetti sono codificati in binario, Adobe ha pubblicato una specifica: Specifiche AMF 3.0 su Adobe.com

Generalmente il modo in cui funziona un sistema client / server che utilizza AMF è qualcosa del genere:

  1. Il client visualizza alcune interfacce utente e apre una connessione TCP al server.
  2. Il server invia alcuni dati al client, che aggiorna la sua interfaccia utente.
  3. Se l'utente effettua un comando, il client invia alcuni dati al server tramite la connessione TCP.
  4. Continua i passaggi 2-3 fino a quando l'utente non esce.

Ad esempio, se l'utente fa clic su " invia posta " pulsante nell'interfaccia utente, quindi il codice client potrebbe eseguire questa operazione:

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

Quindi:

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

nel codice del server, il server sta monitorando anche la connessione per l'oggetto AMF in arrivo. Riceve il messaggio e passa il controllo a una funzione di risposta appropriata. Questo si chiama " invio di un messaggio " ;.

Con ulteriori informazioni su ciò che stai cercando di realizzare, potrei fornirti dettagli più utili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top