EventSource中的错误处理

Error handling in EventSource

本文关键字:处理 错误 EventSource      更新时间:2023-09-26

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

  1. 当我订阅EventSource的"oneror"事件时,我得到的参数类型是什么?我怎么知道到底是什么错误?

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

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

浏览器:Chrome。

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

在我的示例中发生的情况是,数据从服务器发送到客户端,然后发生"oneror"事件(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");

如果还有什么你想知道的遗漏,告诉我。希望你能帮助我。

谢谢!

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

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

尝试使用:

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

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

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