2009-09-14 5 views
4

플래시는 AMF을 통해 서버의 서비스/스크립트와 어떻게 통신합니까? 플래시는 원격 프로 시저 호출을 보낼 때마다AMF 통신은 어떻게 작동합니까?

  • 들이 스크립트 파일을 실행 않는다 : .NET/자바보다 개발하기 쉽게 파이썬/펄/PHP에 대한 AMF libraries에 관한

    ?

  • 소켓을 통해 서비스로 실행되는 스크립트 클래스에 통신합니까? 전형적인 AMF 기능에 관한

:

  • 어떻게 데이터가 전송된다? 자동으로 직렬화되는 메소드 인수에 의한 것입니까?
  • "push"서버는 어떻게 클라이언트에 연결할 수 있습니까? 플래시 동영상을 소켓에 연결해야합니까?

시간 내 주셔서 감사합니다.

답변

8

내가 익숙한 AMF 라이브러리는 PyAMF 뿐이며 지금까지 작업 해 보았습니다. 여기 PyAMF에 대한 질문은 다음과 같습니다

  • 난 당신이 스크립트 (당신은 CGI 같은 의미합니까?)로 실행할 수 있습니다 상상 싶지만, 가장 쉬운 방법은 IMO 특별히 앱 서버를 설정하는 것입니다

    AMF는 가장 쉬운 방법은 PyAMF는

  • 그건 당신이해야 할 일이지만, 다시 경우 소켓을 통해 통신 할 수

    는, 그것의 수신/발신 AMF 데이터

    를 직렬화 랩 순수 파이썬에서 함수를 정의하는 것입니다

  • 요청 순수한 파이썬 함수를 사용하는 가장 쉬운 방법;

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

    나는 것 : 소켓에 대해 하나 개의 사용, 클라이언트에 열려있는 연결 및 '푸시'데이터를 유지 this 예를 들어 여기에

을 볼 것은 localhost:8080에 제공되는 세 가지 간단한 AMF 서비스의 예 확실히 PyAMF를 추천합니다. examples을 확인하여 코드가 무엇이며 코드가 어떻게 보이는지 확인하십시오.

4

Flash는 AMF를 통해 서버의 서비스/스크립트와 어떻게 통신합니까?

데이터가 TCP/IP 연결을 통해 전송됩니다. 때로는 기존 HTTP 연결이 사용되고 다른 경우에는 새 TCP/IP 연결이 AMF 데이터에 대해 열립니다. HTTP 또는 추가 TCP 연결이 열리면 소켓 인터페이스가 사용됩니다. AMF는 일종의 TCP 연결을 통해 확실히 이동하며 소켓 인터페이스는 그러한 연결을 여는 유일한 방법입니다.

전송되는 "데이터"는 "정수", "문자열", "개체"등과 같은 ECMA 스크립트 (Javascript (tm)) 데이터 형식으로 구성됩니다.일반적으로 AMF-사용하여 클라이언트/서버 시스템이이 같은 것입니다 작동하는 방식 AMF 3.0 Spec at Adobe.com

:

    을 객체가 바이너리로 인코딩하는 방법의 기술 사양에 대한

    은 Adobe는 사양을 발표했습니다
  1. 클라이언트는 일부 사용자 인터페이스를 표시하고 서버에 대한 TCP 연결을 엽니 다.
  2. 서버가 클라이언트에 데이터를 보내면 클라이언트의 사용자 인터페이스가 업데이트됩니다.
  3. 사용자가 명령을 내리면 클라이언트는 TCP 연결을 통해 일부 데이터를 서버로 보냅니다.
  4. 사용자가 종료 될 때까지 2-3 단계를 계속하십시오. 사용자가 UI에 "메일 보내기"버튼을 클릭하면

예를 들어, 클라이언트 코드는이 작업을 수행 할 수 있습니다

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

을 그리고 나중에 다음에

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

서버 코드에서 서버는 들어오는 AMF 객체에 대해서도 연결을 모니터링합니다. 메시지를 수신하고 적절한 응답 기능으로 제어를 전달합니다. 이를 "메시지 발송"이라고합니다.

수행하려는 작업에 대한 자세한 정보가 있으면보다 유용한 세부 정보를 제공 할 수 있습니다.