2012-04-27 11 views
2

Javaサーブレットテクノロジで1つのWebアプリケーションの開発を進めています。クライアントのページが2秒ごとに新しいデータのjavascriptによるAJAXリクエストを介してサーバにポーリングされています。 私が直面している問題は、複数の並列クライアントの定期的なポーリングのためにサーバーが遅くなっていることです。Javascript連続サーバポーリング

サーバー上のデータを更新するサーバーに対して他の要求がトリガーされた場合にのみ、自動的にこの機能を実現する他の方法があります。

JavaScriptの彗星を使用しようとしていますが、実装に適切なコードが得られません。

助けがあれば助かります。クライアントとサーバーを接続する

よろしく、 アルス

+0

どのように正確に投票していますか?あなたはあなたのAjaxリクエストでそれを打つたびに、サーバー側で何が起こるでしょうか? –

+0

@JamieDixon私のJSPがロードされているときに、javascript関数を介して、 'xmlhttp.open(" GET "、" gettime "、true)という行でajaxリクエストを送信しています。 // gettimeはサーブレット名になります。xmlhttp.onreadystatechange = getVal; ' getValは、xmlhttp.responseXMLでデータを解析した後、サーブレットからXML形式のデータを取得するjavasrciptメソッドです。 documentElement.getElementsByTagName( "ABCD");そしてそれを利用します。 getValにはsetTimeout(methodname、2000)があります。 2秒ごとに定期的に実行しています。 – Ars

答えて

1

をあなたを助けるためにその言語のWebSocketのチュートリアルをグーグルことができ、また異なる言語でサーバーアプリケーションをコーディングしたい場合はい、サーブレット3.0は、あなたのニーズに適したソリューションになります。

リクエストの実行中にスレッドを解放します ここで詳しく読むことができます。以下の記事で:また

http://www.javaworld.com/javaworld/jw-02-2009/jw-02-servlet3.html

私は、迅速な彗星の実装を追いかけている場合、これらのフレームワークは、標準のサーブレットコンテナには悪くない選択肢をあなたに与えることができAtmosphere FrameworkNetty framework

を見て、あなたをお勧めします。

希望します。

1

もちろん、彗星のアプローチを使用する必要があります。 socket.ioを使用することができます。このプロトコルには、socketio-javanetty-socketioのようないくつかのJava実装があります。 WebSocketsを使用するよりも多くのブラウザをカバーすることができます。