0

我有一个 python 脚本(在 CherryPy 框架中),它发送 Event: 和 data: 这篇Opera 博客文章描述的文本到客户端浏览器。接收 x-dom-event-stream 内容的 javascript 与它们在博客文章中显示的内容几乎相同。但是,浏览器只显示发送的第一个事件。有人知道我错过了什么吗?

我尝试了几个旧版本的 Opera,发现它可以在 Opera 9.52 中运行,但不能在任何新版本中运行。他们改变了什么?

这是python代码:

class dumpData(object):
  def index(self):
    cherrypy.response.headers['Content-Type'] = "application/x-dom-event-stream"

    def yieldData():
      i = 0
      while 1:
        yield "Event: count\n"
        yield "data: "
        yield i
        yield "\n\n"
        i = i + 1
        time.sleep(3);

    return yieldData()

index._cp_config = {'response.stream': True}
index.exposed = True

这是javascript/html。向 /data/ 发出请求会运行上面的 python 函数。

<head>
  <script>
    onload = function() { 
      document.getElementById("count").addEventListener("cout", cout, false);
    }
    function count(e) {
      document.getElementById("stream").firstChild.nodeValue = e.data;
    }
  </script>
  <event-source id="count" src="/data/">
</head>
<body>
  <div id="stream"></div>
</body>

在 Firefox 中打开直接 /data/ url 会将流保存到文件中。所以我知道输出格式正确,并且流完全可以工作。

4

1 回答 1

2

这是一个错误。对于那个很抱歉 :-/

(记录在案:Opera 不幸关闭的错误跟踪器中的 CORE-28592。)

于 2010-05-28T12:21:28.633 回答