現在取り組んでいるプロジェクトで Comet の使用を検討しています。
最初に Tomcat6 と CometProcessor API を使用して、次に Jetty7 Continuations を使用してテスト アプリケーションを作成してみました。
アプリケーションは両方で動作していますが、メッセージの実際の表示に問題があります。
私は、XMLHttpRequest 接続を作成し、それを常に開いたままにしておくという手法を使用しました。これにより、サーバーは、接続されているすべてのクライアントに、データが利用可能になるたびにデータを継続的にプッシュできます。
私のクライアント側のコードは次のようなものです:
function fn(){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (xhr.readyState==3){
document.getElementById('dv').innerHTML =(xhr.responseText);
}
if (xhr.readyState==4){
alert ('done');
}
}
xhr.open("GET", "First", true);
xhr.send(null);
}
オンラインのどこかでreadyState 3を使用していることがわかりました。
私は現在2つの問題に直面しています:
Firefox では、このコードは完全に機能します。しかし、新しいタブまたは新しいブラウザー ウィンドウを開いても、サーバーへの新しい接続は作成されず、新しいタブまたはウィンドウには何も表示されず、最初のタブ/ウィンドウのみが表示されます。これを確認するためにwiresharkを使用しましたが、2番目のタブを開いた後でも接続が1つしか表示されません。なぜこれが起こるのか理解できません。2 接続制限について読みましたが、ここでは接続が 1 つしかありません。
次にChromeでは、上記のコードが機能せず、readystate の 3 に対してコールバックが呼び出されず、サーバーによって接続が閉じられたときにのみ出力が得られます。
また、Comet を Java で実行するための最良の方法/フレームワークはどれかを尋ねたいと思います。現在、クライアント側で jQuery を使用しています。
どんな提案でも大歓迎です!! ありがとう