我遵循this教程并实现了一个简单的聊天应用程序。
我正在最新的Mozilla Firefox和Google Chrome浏览器中对其进行测试。
我主要担心的是消息传递交换似乎不是实时发生的。即使所有服务器处理都在请求后不到一秒钟的时间内完成,但浏览器仍在超过AsyncContext
超时后获得响应。
即使是默认的10秒或通过AsyncContext.setTimeout()
添加的自定义值,响应时间也与超时相同。这应该是预期的行为吗?有没有一种方法可以强迫服务器在准备就绪后立即发送响应,而不等待孔超时间隔?
最佳答案
您可能已经忘记对异步上下文进行complete
了。 Java 6文档:http://docs.oracle.com/javaee/6/api/javax/servlet/AsyncContext.html#complete()
watcherExecutor.execute(new Runnable(){
public void run() {
// publish a new bid event to a watcher
aCtx.getResponse().getWriter().print("A new bid on the item was placed. The current price ..., next bid price is ...");
aCtx.complete();
};
});