【问题标题】:Javascript continuous server pollingJavascript 连续服务器轮询
【发布时间】:2012-05-08 03:15:24
【问题描述】:

我正在开发一个基于 Java servlet 技术的 Web 应用程序,其中客户端页面每 2 秒通过 javascript 轮询服务器一次 AJAX 请求以获取新数据。 我面临的问题是由于定期轮询多个并行客户端,服务器变慢了。

那么只有在向服务器触发更新服务器上数据的任何其他请求后,是否有任何其他替代方法可以自动实现此功能。

我正在尝试使用 javascript comet,但没有获得正确的实现代码。

任何帮助都将不胜感激。

问候, 阿尔斯

【问题讨论】:

  • 您的投票具体情况如何?每次使用 ajax 请求访问它时,服务器端会发生什么?
  • @JamieDixon 当我的 jsp 正在加载时,然后我通过 javascript 函数发送 ajax 请求,xmlhttp.open("GET","gettime",true); //gettime will be the servlet name xmlhttp.onreadystatechange = getVal; getVal 是我正在获取 XML 格式数据的 javasrcipt 方法从 servlet 开始,之后我通过 xmlhttp.responseXML.documentElement.getElementsByTagName("ABCD"); 解析数据并使用它。并且 getVal 有 setTimeout(methodname,2000);每 2 秒定期执行一次。

标签: javascript jsp servlets comet


【解决方案1】:

是的,Servlet 3.0 将是满足您需求的良好解决方案。

它会在你的请求执行时释放你的线程 您可以在此处阅读更多信息。在下面的文章中:

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

另外我建议你看看Atmosphere FrameworkNetty framework

如果追求快速的 Comet 实现,这些框架可以为您提供标准 Servlet 容器的不错替代方案。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    显然你应该使用彗星方法。您可以尝试使用socket.io。该协议有几个 Java 实现,例如 socketio-javanetty-socketio。与使用 WebSockets 相比,您将能够覆盖更多的浏览器。

    【讨论】:

      【解决方案3】:

      使用websockets 将您的服务器与客户端连接起来。

      【讨论】:

        【解决方案4】:

        看起来是您启动 websockets 的绝佳机会。这是为了这样的目的而制作的。 WebSocket - Wikipedia

        WebSocket Tutorial

        WebSocket API Guide

        如果您也想用不同的语言编写服务器应用程序,您可以轻松地搜索该语言的 google websocket 教程来帮助您

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-17
          • 2011-04-04
          • 1970-01-01
          • 2021-12-29
          • 2013-05-25
          • 1970-01-01
          • 1970-01-01
          • 2015-02-28
          相关资源
          最近更新 更多