【问题标题】:out.print not pushing the data to browserout.print 不将数据推送到浏览器
【发布时间】:2013-03-09 12:39:15
【问题描述】:

我有一个带有while (true) 的JSP,其中数据被发送到浏览器。代码sn-p

while (true) {
    out.print("pushing some data to browser");
    out.flush();

    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
    }
}

它大部分时间都可以工作,但很少会以 1 秒的间隔将数据发送到浏览器。

而不是排队,同时抛出所有数据。

【问题讨论】:

  • 周期性发送数据的动机是什么?您是否正在尝试实现 Comet 消息传递系统?
  • 我将此循环用作 pushlet 概念(将数据从服务器推送到客户端)

标签: jsp buffer flush server-push


【解决方案1】:

这是为什么它不起作用的解释: JSP 在运行时是一个 servlet 对象,JSP 脚本/表达式作为 Servlet 对象的 service() 方法的一部分被调用。

在这种情况下,当您访问 JSP 页面时,它会调用 service() 方法并继续将数据附加到流中,直到线程被应用服务器中断(InterruptedException),最后它会立即呈现页面并显示数据。

您应该考虑通过扩展可以保留应用服务器支持的 HttpServlet 来实现 CommetServlet。

App Server comet 支持示例:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-15
    • 2010-12-29
    • 2021-07-12
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    相关资源
    最近更新 更多