我尝试通过一个小例子使用EventSource
对象
在客户端,我的页面带有以下脚本:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Welcome!</title>
</head>
<body>
<div id="result"></div>
<script type="text/javascript">
var sse = new EventSource('event-source.php');
sse.onmessage = function(event) {
console.log(event.data);
document.getElementById("result").innerHTML+=event.data + "<br>";
}
sse.onerror = function(event) {
console.log(event);
}
</script>
</body>
</html>
脚本在服务器上调用event-source.php。这是event-source.php:<?php
header('Content-type: text/event-stream');
echo 'data: '.time().PHP_EOL;
当我在Firefox上尝试此配置时,方法“onMessage”被很好地调用,但Chrome却不行。当我放置“onError”方法时,似乎已调用它,但看不到错误原因。我该怎么办?
最佳答案
在onmessage
中,您正在调用所需的对象属性,为什么不在onerror
中进行相同的操作?
我认为您的onerror
应该如下所示:
sse.onerror = function(event) {
console.log(event.message);
}
说明: https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events
-此链接显示“发生问题(...)时,会生成错误事件。”
因此,在进行自定义错误处理时,您应该了解 ErrorEvent 结构:)就像这样:
描述问题的人类可读错误消息。
发生错误的脚本文件的名称。
发生错误的脚本文件的编号。
发生错误的脚本文件的编号。
与事件有关。
更多信息和来源:https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent