我正在探索使用Comet作为我正在开发的项目。
我尝试先使用Tomcat6和CometProcessor API创建测试应用程序,然后再使用Jetty7 Continuations。
该应用程序是对两种工作,但我有一些与消息的实际显示问题。
我使用了创建XMLHttpRequest连接并始终保持打开状态的技术,以便服务器可以在数据可用时连续将数据推送到所有连接的客户端。Comet Jetty/Tomcat,Firefox和Chrome有一些浏览器问题
我的客户端代码是与此类似:
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某个地方的这件事情。
我目前面临两个问题:
在火狐此代码的工作非常完美。但如果我打开一个新选项卡或甚至是一个新的浏览器窗口,它不会向服务器建立新的连接,并且新选项卡或窗口上不显示任何内容,只有第一个选项卡/窗口才会显示。我使用wireshark检查这个,即使在第二个标签打开后,它也只显示1个连接。我无法理解为什么会发生这种情况。我已阅读了有关2个连接限制的信息,但这里只有一个连接。
其次在铬,上面的代码不工作,并且回调不调用为3 readyState的,只有当连接服务器我得到的输出关闭。
我还想问一下哪个是用Comet做Java的最好方法/框架。我目前在客户端使用jQuery。
任何建议将不胜感激!谢谢
我不认为你回答了这个问题。 无论道场有多么强大,都没有魔法。应该有办法做基础设施的肮脏工作。 – 2010-03-20 12:30:10