x-dom-event-stream в Opera 10 работает только над первым событием - PullRequest
0 голосов
/ 27 мая 2010

У меня есть скрипт Python (в рамках CherryPy), который отправляет Event: и data: текст, как это Оперный пост в блоге описывает в браузере клиента. JavaScript, который получает содержимое потока x-dom-event-stream, практически идентичен тому, что они показывают в посте блога. Однако браузер отображает только первое отправленное событие. Кто-нибудь знает, что мне не хватает?

Я попробовал несколько более старых версий 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>

Открытие директории / data / url в Firefox сохраняет поток в файл. Так что я знаю, что вывод в правильном формате и что поток работает вообще.

1 Ответ

2 голосов
/ 28 мая 2010

Это ошибка. Извините за это: - /

(Для записи: CORE-28592 в закрытом баг-трекере Opera).

...