我可以找到很多关于Long Polling如何工作的信息(例如,这个和这个),但没有关于如何在代码中实现它的简单示例.
基本上,我将如何使用Apache Tomcat来处理请求,以及如何编写一个简单的应用程序(spring),它会对服务器进行“长时间轮询”以获取新消息?
该示例不必是可扩展的,安全的或完整的,它只需要工作!
如果有人能给我这样的教程或推荐任何其他教程,我将不胜感激.
解决方法
这是我能想到的最简单的例子……
在控制器中:
@RequestMapping("/longPolling") public String longPolling(Model model) { while(true) { // .. Do something,break when done... if( somethingIsDone ) { break; } } return "someResponse"; }
在调用此方法的视图中,您将设置ajax调用,并且在超时时只需再次调用它.长轮询的想法是服务器只有在有回应的东西之后才会响应.
如果使用Spring 3.2,更好的方法是使用DeferredResult或者从处理程序方法返回Callable.如果您是Spring 3.2之前的版本,那么有几个框架可以用来帮助,比如Atmosphere,它可以很好地与Spring一起工作.有些甚至还有JavaScript部分来简化客户端编码.