[英]try catch doesn't work with sse
这是代码, PS: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');
}
当我在控制台中在未设置为处理 SourceEvents 的任意 URL 上运行此程序时,控制台成功记录了 SourceEvent 实例。 这与您所描述的类似。
所以我的猜测是没有错误可以捕捉。 即使没有实际连接,SourceEvent 实例也已成功构造。 如果要检测连接是否正常工作,请使用EventSource.readyState
属性。
在我的屏幕截图中,您可以看到readyState = 0
,这意味着连接正在“连接”,但实际上它永远不会完成连接,因为另一端的服务器未设置为处理 SourceEvents。
https://developer.mozilla.org/en-US/docs/Web/API/EventSource/readyState
我正在测试同样的东西, onerror
没有提供真正有用的信息。 例如,如果您关闭服务器或在客户端连接时发送空响应,则无法在客户端以编程方式检测到具体原因,我可以看到仅检查开发控制台。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.