我有一个 python 脚本(在 CherryPy 框架中),它发送 Event: 和 data: 文本,如下 Opera blog post向客户端浏览器描述。接收 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 会将流保存到文件中。所以我知道输出的格式正确并且流完全可以工作。
最佳答案
这是一个错误。抱歉:-/
(郑重声明:Opera 不幸关闭的错误跟踪器中的 CORE-28592。)
关于javascript - Opera 10 中的 x-dom-event-stream 仅适用于第一个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2916921/