我在Chrome中看不到带有onmessage方法的HTML5 EventSource事件

mik*_*a34 12 javascript php html5

我尝试使用一个小例子使用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>
Run Code Online (Sandbox Code Playgroud)

脚本在服务器上调用event-source.php.这是event-source.php:

<?php
header('Content-type: text/event-stream');
echo 'data: '.time().PHP_EOL;
Run Code Online (Sandbox Code Playgroud)

当我在Firefox上尝试这种配置时,方法"onmessage"被很好地调用,但不是Chrome.当我把"onerror"方法,它似乎被调用但我看不到错误原因.

我该怎么办 ?

jav*_*web -1

onmessage您调用想要的对象属性时,为什么不在 中执行相同的操作onerror
我认为你的onerror应该是这样的:

   sse.onerror = function(event) {
      console.log(event.message);
   }
Run Code Online (Sandbox Code Playgroud)

说明: https: //developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events - 此链接显示“当出现问题时 (...),会生成错误事件。”

因此,当自定义错误处理时,您应该了解ErrorEvent结构:) 它是这样的:

  1. 错误事件。message(只读)是一个 DOMString,包含描述问题的人类可读错误消息。
  2. 错误事件。filename(只读)是一个 DOMString,包含发生错误的脚本文件的名称。
  3. 错误事件。lineno(只读)是一个整数,包含发生错误的脚本文件的行号。
  4. 错误事件。column(只读)是一个整数,包含发生错误的脚本文件的列号。
  5. 错误事件。error(只读)是事件所关注的 JavaScript 对象。

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