我尝试通过一个小例子使用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 结构:)就像这样:
  • ErrorEvent.message (只读)是包含以下内容的DOMString:
    描述问题的人类可读错误消息。
  • ErrorEvent.filename (只读)是包含名称的DOMString
    发生错误的脚本文件的名称。
  • ErrorEvent.lineno (只读)是包含行的整数
    发生错误的脚本文件的编号。
  • ErrorEvent.column (只读)是包含列的整数
    发生错误的脚本文件的编号。
  • ErrorEvent.error (只读)是一个JavaScript对象,它是
    与事件有关。

  • 更多信息和来源:https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent

    09-19 12:06