Grails 中的 HTML5 SSE

Posted

技术标签:

【中文标题】Grails 中的 HTML5 SSE【英文标题】:HTML5 SSE In Grails 【发布时间】:2016-01-04 10:40:45 【问题描述】:

我试图在 grails 应用程序中使用 html5 SSE。以下是实际的示例代码:

def push()
    println "Inside action..."
    response.setContentType("text/event-stream");
    response.setCharacterEncoding("UTF-8");
    render("data: $System.currentTimeMillis()");

客户端代码:

<script type="text/javascript">
    if(typeof(EventSource) !== "undefined") 
        var source = new EventSource("push");
        source.onmessage = function(event) 
            console.debug("event triggered...");
            document.getElementById("result").innerHTML += event.data + "<br>";
        ;
        source.onerror = function(event) 
            console.log(event.message);
        
     else 
        document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
    
</script>

但是 onmessage 事件没有被触发。 onerror 被触发并打印 undefined。它会执行正确的操作,但不会流式传输数据。

我也试过了:

response.outputStream.write(...........)
response.outputStream.flush()

但不起作用。

请提出建议。

【问题讨论】:

【参考方案1】:

好吧,我解决了。我用过:

    PrintWriter writer = response.getWriter();

    writer.write("data:"+System.currentTimeMillis()+"\n\n")

它成功了。

【讨论】:

您好 Vivek,您是如何设法刷新数据并避免在控制器/操作完成后关闭连接的?

以上是关于Grails 中的 HTML5 SSE的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ 中的 Grails 3 调试

如何管理 Grails 中的对象修订?

Grails 中的电子邮件验证

Tomcat中的Grails请求参数编码问题

Grails 中的邮件插件

等价于 mvn 依赖:Grails 中的树