2011-07-04 8 views
1

私は、シリアル化されたオブジェクト(または単純な文字列)をリモートJVM経由でPlayFrameworkモデルまたはコントローラオブジェクトに送信する方法を探しています。PlayFrameworkオブジェクトへのリモート呼び出し

プッシュされたイベントに基づいてWebアプリケーションを作成しようとしています。そのため、モデルにいくつかのイベントが追加されたときに、長いポーリングのajax呼び出しで新しいイベントを取得することは可能です。

ここでは、リモートJVM、RMI、ソケット、または動作可能なものを通して私のモデルにイベントを追加したいと思います。 PlayFrameworkのドキュメントを検索しましたが、これを行う方法に関するAPIやコードの一部が見つかりませんでした。

答えて

1

あなたはWebSocketをを使用することができ、私はここでそれについてのブログ記事を書いた: http://geeks.aretotally.in/log4play-log4j-ui-mashed-up-with-play-framework-knockout-js-and-websockets

私の例では、唯一のサーバーからクライアントにプッシュしていますがJSONによる双方向通信のためのWebSocketを使用することができます。 http://www.playframework.org/documentation/1.2.1/asynchronous#UsingWebSockets

Akkaリモートアクター(http://akka.io/docs/akka/1.1.3/scala/remote-actors.html)を使用することもできます。

1

サーバーに簡単にデータをプッシュしていませんか?

自然な方法は、データが構造化されていない場合はJsonDataオブジェクト(データが構造化されている場合)またはプレーンパラメータを受け入れるコントローラアクション(HTTP POSTを読み込みます)を呼び出すことです。劇中で私の頭の上オフ

は、それは次のようになり話す:

WSRequest request = new WSUrlFetch().newRequest("http://<url of your 'vm'>"); 
// request.setParameter("param", value); 
// ... 
request.post(); 

あなたは、このためのWebSocketは必要ありません。

+0

これは簡単な部分ですが、WebSocketはまったく必要ありません。彼はまだ彼がまだ遭遇していないオプションを知ることができます。 WebSocketは、ブラウザのサポートが問題でない場合、長いポーリングとその無駄な呼び出しを避け、プッシュを行うための接続を再利用します。 –

+1

はい、そうです、WebSocketは、HTTPコンシューマーには完全に意味があります。すべてのインフラストラクチャコンポーネントが協調的であれば、彼は間違いなく長いポーリングからWSに切り替えることができます。しかし、外部イベントプロデューサ(彼のリモートVM)はそれを再生するかどうかは、WSチャネルのイベントを生成する伝統的な要求を行うことができます。 –

+0

私はWebSocketのような未熟な技術を使用したくはないと言いましたが、WebSocketはまだほとんどのWebブラウザでサポートされておらず、標準はまだW3Cのものです。 しかし、長いポーリングを使用するフロントエンド/バックエンド通信の問題は解決された問題です。私は現在、WS /バックエンド通信に焦点を当てています。 アーキテクチャを再開するには、Webバックエンドで長いポーリングでフロントエンドにイベントをプッシュします。プッシュされたイベントは、独立したWebサービスから来て、フロントエンドにプッシュされる前にバックエンドの「バッファ」のようなものに配置されなければなりません。 –

関連する問題