【问题标题】:Long polling in javajava中的长轮询
【发布时间】:2013-07-23 05:44:02
【问题描述】:

我已经编写了用于长轮询的服务器端代码。我想用java编写客户端程序。因此,根据长轮询,客户端发送一个由服务器帮助的请求,服务器在事件发生时响应请求,然后客户端发送一个新请求。

所以我面临的麻烦是用java编写的客户端。在我发送请求后,如果服务器已响应它,如何继续检查客户端。我应该以什么时间间隔将请求发送到服务器。我完全糊涂了。我是 Web 技术的初学者。我试着用谷歌搜索,但所有的例子都是基于客户端是一个 java 脚本或 JSP。任何人都可以提供一个链接到一个适当的教程,客户端是一个java HTTp应用程序或提供一个例子(即实现长轮询)。

【问题讨论】:

标签: java client long-polling


【解决方案1】:

对 HTTPURLConnection 的 getInputStream 的调用返回一个阻塞流。在此流上调用读取将阻塞线程,直到服务器提供数据,您无需继续轮询数据。

在单独的线程中调用读取并将 HTTPURLConnection 保持在范围内而不关闭连接。这应该可以让您在可用时返回数据。从服务器收到 200OK 后,在同一连接上发回另一个请求以使其保持打开状态。 (这是在您没有实现请求超时的情况下。)

【讨论】:

  • 好吧,再澄清一个。如何在同一连接上重新发送请求:| .我已经尝试了很长时间。
  • 希望您的服务器在发送响应后不会关闭连接?如果是,那么你将不得不再次连接。您遇到什么异常?
  • 好的,这就是我所做的。到目前为止,我没有在单独的线程上读取输入流。用于在主线程上测试它的全部。只是一切都在一个循环中。我开始一个连接,然后我开始我的循环。如果我读到了 200,我会检查响应代码。如果是别的东西,我必须重新发送请求。它不是重新发送请求,而是进入无限循环:| .
  • 查看我在rsankarx.wordpress.com/2013/07/25/http_server_long_polling 的示例代码。除非我看到代码,否则不确定您可能做错了什么。
  • 下面是我的另一个问题的代码链接。虽然我通过听取前两位评论员的建议让我的程序运行了 :),但如果你提出你对代码的意见或更好的方法来实现它,我会很高兴 :)。 stackoverflow.com/questions/17826107/…
猜你喜欢
  • 1970-01-01
  • 2013-02-28
  • 2013-09-13
  • 2013-08-08
  • 2012-10-01
  • 2011-04-20
  • 1970-01-01
  • 2019-05-28
  • 2011-10-05
相关资源
最近更新 更多