尝试捕获不适用于sse

时间:2013-09-18 08:06:54

标签: javascript google-chrome google-chrome-devtools server-sent-events

这是代码, P.S:s10中的服务httpd已停止

        try {
            var source = new EventSource("http://s10/server.php");
            console.log(source);
        } catch (e) {
            console.log("ADSfasfasfasdfasdfas" + e)
        }

这是控制台: enter image description here

为什么try catch没有捕获错误?

当然我有onerror事件和onclose事件:

        source.addEventListener('error', function(e) {
            if (source.readyState == 2) {
                connectionClosed();//to change some style
                console.log("Disconnected");
            }

        }, false);

        source.onerror = function(e) {
            if (source.readyState != 0) {
                connectionClosed();//to change some style
                console.log("Disconnected");
            }
        };
        source.onclose = function() {
            connectionClosed();//to change some style
            console.log('Connection closed');
        }

2 个答案:

答案 0 :(得分:0)

当我在控制台中对未设置为处理SourceEvents的任意URL运行此控件时,控制台会成功记录SourceEvent实例。这类似于您所描述的内容。

SourceEvent

所以我的猜测是,没有错误可以抓住。 SourceEvent实例已成功构建,即使没有实际连接。如果要检测连接是否正常,请使用EventSource.readyState属性。

在我的屏幕截图中,您可以看到readyState = 0,这意味着连接是"连接",但实际上它永远不会完成连接,因为另一个服务器方面没有设置来处理SourceEvents。

https://developer.mozilla.org/en-US/docs/Web/API/EventSource/readyState

答案 1 :(得分:0)

我正在测试同样的东西,onerror 没有提供真正有用的信息。例如,如果您关闭服务器或在客户端连接时发送空响应,则无法在客户端以编程方式检测到具体原因,我可以通过检查开发控制台看到。