这是代码, P.S:s10中的服务httpd已停止
try {
var source = new EventSource("http://s10/server.php");
console.log(source);
} catch (e) {
console.log("ADSfasfasfasdfasdfas" + e)
}
这是控制台:
为什么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');
}
答案 0 :(得分:0)
当我在控制台中对未设置为处理SourceEvents的任意URL运行此控件时,控制台会成功记录SourceEvent实例。这类似于您所描述的内容。
所以我的猜测是,没有错误可以抓住。 SourceEvent实例已成功构建,即使没有实际连接。如果要检测连接是否正常,请使用EventSource.readyState
属性。
在我的屏幕截图中,您可以看到readyState = 0
,这意味着连接是"连接",但实际上它永远不会完成连接,因为另一个服务器方面没有设置来处理SourceEvents。
https://developer.mozilla.org/en-US/docs/Web/API/EventSource/readyState
答案 1 :(得分:0)
我正在测试同样的东西,onerror
没有提供真正有用的信息。例如,如果您关闭服务器或在客户端连接时发送空响应,则无法在客户端以编程方式检测到具体原因,我可以通过检查开发控制台看到。