2011-06-29 12 views
0

私はクライアントとサーバーのゲームを作成しています。私のクライアントはフレックスベースのゲームで、私のサーバーはerlangサーバーです。 最初、フレックスクライアントを直接Flash Playerでテストすると、ソケット接続を通じてerlangサーバーに簡単に接続できます。両方とも問題なくデータを交換できます。フレックスソケットとエラーソケット通信の問題

私のFlexアプリケーションをApache httpサーバにデプロイし、ブラウザを使ってhttp://localhost/を呼び出して実行すると、問題が発生します... my flexソケットは、私のerlangサーバにクロスドメインポリシーを要求するメッセージを送信します。

クロスドメインポリシーを表すxmlメッセージを作成し、それをフレックスアプリに返信します。

まだ、私はflexクライアントとerlangサーバの間に永続的なソケット接続を確立できません。私はクライアント・サーバ間の接続が確立されている場合、内部状態をCONNECTEDに変更するフレックス・ソケットにリスナーを追加するため、これを知っています。

+0

まず、ゲームにFlexを使用している理由は何ですか?おそらくほとんどUIを持っていないゲーム用のUIフレームワークライブラリをインクルードしす​​ぎるように思えます(私はここに仮定しています...)。次に、広く利用できるもの(長いポーリング(BlazeDS、GraniteDS)またはRTMP(LCDS)のAMF)を使用するのではなく、WowzaやSmartFoxServerのような市販のサーバーを使用する代わりに独自のカスタムソケットを使用しています。あなた自身のソケットを作成するだけの多くの作業のようです。 –

+0

なぜ私は自分のゲームサーバーを作っているのか尋ねると答えは商業的ではありませんが、感情的にもっと:) :) –

+0

さて、どうしてFlexを使っていますか? –

答えて

0

私はこの問題を経験していませんが、おそらくこれが役に立ちます。

デフォルトのポリシーファイルが のcrossdomain.xmlという名前とデータを提供 あるサーバーの ルートディレクトリに置かれている... あなたは、デフォルト以外のポリシーファイルにアクセスするためのloadPolicyFile()メソッドを使用することができます。

http://livedocs.adobe.com/flex/3/html/help.html?content=deployingoverview_12.html

のXMLSocket サーバーによって提供されるポリシーファイル

は、それが も が許可されたアクセスするためのポートを指定しなければならないことを除いて任意の 他のポリシーファイルと同じ構文を持っています。ポリシーファイルが1024より小さいポートから になると、 は任意のポートへのアクセスを許可できます。 ポリシーファイルがポート1024または より高い場合、1024以上の他のポート にのみアクセスを許可できます。

http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00005403.html

+0

フラッシュドメインのポリシーについていくつかの説明を読んだ後...私はどのようにプレイヤープロセスのクロスドメイン接続を正確に見つけました...そして、私はこのリンクを見つけました:https://github.com/saulabs/flashpolicy-erlang ... thisリンクは私にエルランソケットサーバがどのようにしてクロスドメインポリシー要求を管理するか教えてくれたかもしれません...おそらく私はgithubプロジェクトが私に最初に示したことを実装しようとします...すべてのアドバイスのおかげで、 ... –

+0

これは私がやったことです。成功: 1)github(github.com/saulabs/flashpolicy-erlang)で見つかったプロジェクトと、ポリシーファイルの仕組みに関する情報(http:// www.senocular.com/pub/adobe/crossdomain/policyfiles.html)、私は自分のサーバーを変更しました...ポリシーファイルの要求をリッスンし、読み込まれたポリシーファイルを応答として返し、接続を閉じます。 2)フレックスクライアントがポリシーファイルを受け取った後、再接続を試みます。新しい接続が確立されると、Flash Event.CONNECTがスローされ、すべて正常に動作します。 –

0

のFlashPlayerはいくつかの方法でごソケットの使用を制限しています。あなたがすでに見つけたもの:)もう一つはあなたがネットワークを使うかどうかを指定することです。ネットワークモードとファイルシステムモード(ファイルシステムへのアクセス)があります。両方を持つことはできません。

だから、これでそれをコンパイルしようとする必要があります:

-use-network=true 

そして、はい、私はそれがフラッシュとPITAやってソケットプログラミングを知っています。すべてのOnErrorXYZメソッドを実装し、できるだけ多くの情報を出力する必要があります。 wiresharkまたは別のネットワークスニファを使用することも良い考えです。

関連する問題