2012-03-09 13 views
1

チャットルームの長いポーリングまたは保留中のリクエストを実装する必要があります。私はa4j:pushを試みましたが、実際の長いポーリング手法のようには動作しません(次の説明:https://community.jboss.org/message/16614参照)。JSFのロングポーリング(保留中のリクエスト)

質問は次のとおりです。長いポーリングを実現するにはどのような方法が必要ですか?

私はJSF 1.2、JAVA EE 6、RichFaces 3.3.2を使用しています。

タクを先に入力してください!

答えて

1

RichFacesのa4j:pollコンポーネントを使用する必要があります。 exadel live demoには非常に素晴らしいサンプルがあり、主要なプロパティについて説明しています。さらに、official documentationで詳細情報を入手できます。

多分チャットの実装例を見て、ポーリングしないといいでしょう。それについての質問があります:

https://stackoverflow.com/a/1577486/1065197

+0

こんにちは、答えてくれてありがとう。それは誤解でなければならない、長いポーリングの下で​​私は、クライアントがサーバー上のリソースの要求を行い、サーバーが応答しないhttpを介してサーバープッシュを実装する方法を意味し、リターンまたは指定された時間が経過する。サーバーが応答したり接続を閉じたりすると、クライアントは一定の時間待機してから再接続し、プロセスが繰り返されます。 – golinko

+1

私はa4j:pollとa4j:pushが定期的にサーバにリクエストを送信することを理解しています(毎秒)。これは数百のクライアントの場合にサーバにとって重要なものになるかもしれません... – golinko

+0

'a4j:poll'タグコンポーネントは表示する結果がある場合にクライアントがサーバーに問い合わせるまでに待つ時間を構成することができます。 Live exadelのデモでは、クライアントが0.5秒ごとにサーバーをポーリングして、「日付と時刻の表示」アクションを実行することが示されています。 –

0

netty-socketio Javaプロジェクトを使用してみてください。それは長いポーリングサポートを持っています。 jsfページでSocket.IO client javascript libを使用してください。

Javascriptのlibの使用例:

<script type="text/javascript"> 
    var socket = io.connect('http://localhost:81', { 
     'transports' : [ 'xhr-polling' ], 
     'reconnection delay' : 2000, 
     'force new connection' : true 
    }); 
    socket.on('message', function(data) { 
     // here is your handler on messages from server 
    }); 

    // send object to server 
    var obj = ... 
    socket.json.send(obj); 
</script> 
関連する問題