このOperaブログ投稿で説明されているように、Event:およびdata:テキストをクライアントブラウザに送信するPythonスクリプト(CherryPyフレームワーク内)があります。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を開くと、ストリームがファイルに保存されます。したがって、出力が正しい形式であり、ストリームがまったく機能することがわかります。