0

この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を開くと、ストリームがファイルに保存されます。したがって、出力が正しい形式であり、ストリームがまったく機能することがわかります。

4

1 に答える 1

2

バグです。申し訳ありません:-/

(記録のために:Operaの残念ながら閉じられたバグトラッカーのCORE-28592。)

于 2010-05-28T12:21:28.633 に答える