grails - Grails 1.3.7如何在不进行任何缓冲的情况下直接写入输出流

class MyController {
    def startTwoMinuteTask = {
        response.contentType = 'text/html'
        def out = response.outputStream.destination
        out.println 'Starting ...'
        out.flush()
        for (int i=0;i<10;i++) {
            out.println " <br>    $i"
            out.flush()
            Thread.sleep(1000)
        }
        return null
    }
}

我想在状态更新中显示1到10,但是grails正在缓冲整个过程。我该如何工作?谢谢!

最佳答案

我知道这不是您问题的实际答案,但是为什么不使用后台线程?

使用Quartz plugin之类的东西将使您摆脱长时间运行的过程。您可以让浏览器定期轮询更改(或如果可以的话,使用Atmosphere之类的功能进行推送)。

这样做的好处是您不会锁定打开连接。此外,并非所有浏览器都会等待那么长时间-有时它们会超时。 HTTP并不是真正的长期运行连接,尤其是在没有信息传递的情况下。

https://stackoverflow.com/questions/9843126/

相关文章:

grails - Grails-多个联接在 ListView 中显示冗余数据

exception - 保存操作时出现 MissingMethodException

grails - 使设计适应 Grails

grails - 从环境变量将grails配置外部化为多个属性文件

grails - Grails UI性能插件页面压缩问题

javascript - 如果弹出窗口被打开,则禁止刷新

jquery - 克隆一个动态创建的选择列表

grails - 哪个框架用于访问 couchDB 的门户网站?

mongodb - 在grails中,如何让transactionManager是mongoTran

hibernate - Grails数据源 “Cannot add or update a chil