我正在通过Java servlet技术开发一个Web应用程序,其中客户端页面通过JavaScript向服务器轮询,每隔2秒后对新数据发出AJAX请求。 我面临的问题是,由于多个并行客户端的定期轮询,服务器变慢。Javascript连续服务器轮询
因此,只有在更新服务器上的数据的服务器触发任何其他请求后,才会自动实现此功能。
我想使用JavaScript的彗星,但没有得到适当的代码执行。
任何帮助将是可观的。
问候, 人工鱼礁
我正在通过Java servlet技术开发一个Web应用程序,其中客户端页面通过JavaScript向服务器轮询,每隔2秒后对新数据发出AJAX请求。 我面临的问题是,由于多个并行客户端的定期轮询,服务器变慢。Javascript连续服务器轮询
因此,只有在更新服务器上的数据的服务器触发任何其他请求后,才会自动实现此功能。
我想使用JavaScript的彗星,但没有得到适当的代码执行。
任何帮助将是可观的。
问候, 人工鱼礁
使用websockets到您的服务器与客户端连接。
看起来像是您启动websockets的绝佳机会。这是为了这样的目的。 WebSocket - Wikipedia
如果你想编写不同语言的服务器应用程序,以及时,你可以轻松谷歌的WebSocket教程该语言来帮助你
是的,Servlet 3.0将是您的需求的良好解决方案。
它会释放你的线程,而你的请求正在执行 你可以阅读更多关于这里。下面的文章中:
http://www.javaworld.com/javaworld/jw-02-2009/jw-02-servlet3.html
另外我建议你看看Atmosphere Framework和Netty framework
这些框架可以给你不错的替代标准Servlet容器如果追逐快速Comet实现。
希望它有帮助。
显然你应该使用彗星的方法。您可以尝试使用socket.io。这个协议有几个Java实现,如socketio-java和netty-socketio。您将能够覆盖比使用WebSockets更多的浏览器。
你究竟在做什么轮询?每次用ajax请求打到服务器端时会发生什么? – 2012-04-27 11:13:15
@JamieDixon当我的jsp正在加载,然后我通过javascript函数,通过'xmlhttp.open(“GET”,“gettime”,true)发送ajax请求; // gettime将是servlet名称xmlhttp.onreadystatechange = getVal;' getVal是javasrcipt方法,我从servlet中获取XML格式的数据,之后我通过'xmlhttp.responseXML解析数据。 documentElement.getElementsByTagName(“ABCD”);'并利用它。 并且getVal有setTimeout(methodname,2000);每2秒钟执行一次。 – Ars 2012-04-27 11:35:09