我有一个python脚本(在cherrypy框架中),它发送事件:和data:text,如下所示
Opera blog post
对客户端浏览器进行描述。接收x-dom-event-stream内容的javascript几乎与它们在博客文章中显示的内容相同。但是,浏览器只显示发送的第一个事件。有人知道我错过了什么吗?
我尝试了一些旧版本的歌剧,发现它可以在歌剧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中打开direct/data/url会将流保存到一个文件中。所以我知道输出的格式是正确的,流完全可以工作。