pyamfというモジュールを使うとGAEとflash間での通信が出来ます。使い方はこちらで紹介されている通りにすればばっちり動きました。
ただ、紹介されているサンプルのままだと少し使いづらいです。何が問題かといいますと、サンプルは以下のファイル配置(関係ないファイルは除いています)でhttp://example.com/testPyAMF.swfからhttp://example.com/へアクセスして通信します。
+ MyProject - main.py - app.yaml - testPyAMF.swf
flashから通信を受ける方がルートパスになっているんですが、これを変更できないのです。したがってhttp://example.com/がtestPyAMF.swfからの通信の受信専用になってしまい、ブラウザでアクセスするとエラーになります。何とかhttp://example.com/flashserviceとかと通信できないのかなと色々探していると、見つかりました。
で、見てみると何の事はなくてスクリプトファイルを別に用意するということでした。ファイルの配置で言うと以下のようになります。ファイルの配置と、app.yamlの内容以外は修正の必要がありません。
+ MyProject
- main.py # ここにブラウザからのリクエストを処理させる
- app.yaml
- testPyAMF.swf
+ services
- main.py # こっちにflashからのリクエストを処理させるapp.yamlは以下のようになります。
application: MyProject version: 1 runtime: python api_version: 1 handlers: - url: /services/.* script: services/main.py - url: /.* script: main.py
これでFlashからhttp://example.com/servicesにアクセスすればOKです。
あと、同じブログの別記事で公開されているサンプル(ソース有)は構成含めてGAE + Flashやるなら凄く参考になります。
何にせよapp.yamlで複数スクリプトを割り当てるのは盲点でした。
常識ですか。そうですか。
関連する記事
タグ: flash, google app engine, python

