EventSource中的错误处理

时间:2012-08-29 22:39:22

标签: java javascript html5 event-sourcing server-sent-events

我正在尝试创建一个使用EvenSource对象(在javascript中)制作服务器发送事件(彗星)的页面。 我阅读了很多关于它的教程,但没有找到解释以下问题的教程:

  1. 当我订阅EventSource的“onerror”事件时 - 我得到的参数类型是什么?我怎么知道究竟是什么错误?

  2. 我知道EvenSource有一个readystate,它的变化取决于浏览器。每次“onmessage”事件发生后,为什么我的readystate会更改为0? (我使用铬)。

  3. 我如何证明我与服务器的连接是否保持连接而不是每次都重新连接?

  4. 浏览器:Chrome。

    服务器端:Java(如果相关,我所做的示例是在Java EE预览中。但我将在WebLogic 10R3上工作。

    我的示例中发生的事情是数据从服务器发送到客户端,而不是“onerror”事件发生(readystate为0),3秒后(chrome默认为),它重新连接并再次发送数据

    javascript代码:

    var source = new EventSource("TrySRV");
    source.onmessage = function(event){
        alert(event.data);
    }
    
    source.onerror = function(event){
        alert(source.readystate);
    }
    

    Java代码:

    response.setHeader("Content-Type", "text/event-stream");
    response.setHeader("Cache-Control", "no-cache");
    response.getWriter.write("Hello World");
    

    如果您还想知道其他任何遗漏 - 请告诉我。 希望你能帮助我。

    谢谢!

2 个答案:

答案 0 :(得分:3)

您需要在服务器上保持连接,而不是对其进行响应并关闭。

请参阅http://jcp.org/en/jsr/detail?id=315或Glassfish / Grizzly / Jetty服务器。

答案 1 :(得分:1)

尝试使用:

response.getWriter.write("data:Hello World")

根据w3schools:输出要发送的数据(始终以“data:”开头)

http://www.w3schools.com/html/html5_serversentevents.asp