2009-07-26 31 views
2

バックエンドサーバに接続してデータを交換するFlash(Flex)クライアントを作成しました。HTTPトンネリングの実装方法

私も最初から自分のサーバーを書いて、それは2つの目的があります

(1)デフォルトのWeb(HTTP)サーバー - ポート上で80

をリッスン(2)ソケット/応用 - サーバー - 既定でポート443をリッスンします

便宜上、両方のサーバーが同じプロセス空間で実行されます。彼らは大規模な負荷を処理することは期待されていないので、私はそれでいいです。

クライアントがHTTPソケットからブラウザに提供されると、クライアントはソケット/アプリケーションサーバーへのXMLSocketを開こうとします。

これで、ユーザーがファイアウォールの内側にいる場合でもクライアントがアプリケーションサーバーに接続できるように、HTTPトンネリングを実装したいと考えています。私は、外部のサーバー(プロキシなど)を必要としません - 私はすでに持っているサーバーを使用します。

私の質問:

(1)そのためにポート443を使用することをお勧めしますか? (ファイアウォールをもっとうまくやっているのですか?)

(2)私の知る限り、私の実際のアプリケーションデータは単純にHTTP構造でカプセル化されていますヘッダー)、両方のクライアント側とサーバー側から。それはそうですか、私はここで何かを逃していますか?

(3)ソケットを介して送信するメッセージごとにデータを隠したりカプセル化したりする必要がありますか?接続を開くときに最初のメッセージをカプセル化できますか?

ありがとうございました! Fuzz

+0

ポート80で両方を組み合わせてみませんか?そこには、XMLRPS、REST、SOAPといったHTTPベースのRPC技術が数多くあります。なぜそれらの1つを使用しないのですか? Webリクエストとアプリケーションリクエストに異なるURLを定義するだけです。 –

+0

あなたは最初からあなたのサーバーを書いていますか?オペレーティングシステムとすべて?私は何とかそれを疑う。 – Sneakyness

+0

エルム、私は彼がウェブサーバーを意味すると確信しています。ハードウェアやO/Sではありません。 – cwap

答えて

4

AMFプロトコルによるホイール使用リモーティングを再発明しないでください。 AMFは、ActionScript(MXML)とサーバー側言語の間でシリアル化を実行するHTTPベースのバイナリ形式です。技術的には、これはHTTPトンネリングです。 Adob​​eは、AS/Java向けAMFのBlazeDS(オープンソース)およびLCDS(商用)実装を提供していますが、AS/PHP、AS/Python、AS/Ruby、AS/.NET用のAMFのサードパーティ実装があります。

ところで、AMFはオープンソース形式です。

+0

Yakovに感謝します。私はこれについて読んでいますが、これは別のプロキシ/サーバー/プロセスを実行することになります。私のWebサーバーは組み込み環境で動作します。私が最初から書いた理由があります。それは最小限のオーバーヘッドで、それを完全に制御できるようにするためです。私の場合、別のサーバー/サービスは受け入れられません。私は恐れています。 –

+0

OK、AMF、BladeDS、LCDSについて読んだことがあります。基本的には、私が必要としないもの(オブジェクトリモーティング、通信に自分のXMLコンテンツを使用し、あまりにも多くのオブジェクトを単純なコマンドや応答しか送らないため)を提供するので、これは私のキラーのオーバーシュートです。 HTTPトンネリングに代わるものではありません。トンネリングについての考え方は、ファイアウォールをバイパスすることです。私はあなたの提案した技術がその必要性に答える証拠を見つけることができませんでした。 –

+0

私の知る限りでは、過去8年間、ファイアウォールはAMF(バイナリ)コンテンツを制限しませんでした。 Flexアプリケーションは、ポート80または443を介してBlazeDS/LCDSサーブレットと通信します。 flexアプリケーションが適切な権限を持つcrossdomain.xmlを持たないサードパーティのサーバに接続する必要がない限り、プロキシを使用する必要はありません。 –

関連する問題