2

ティッカー アプリケーションに (クロムで) SSE を使用しようとしています。私が見つけた、または書いたすべてのサンプルで、接続が3〜4秒ごとに閉じられているようです。http://www.w3schools.com/html5/tryit.asp?filename=tryhtml5_sseで例を実行している場合でも

更新が 3 ~ 4 秒ごとに到着することがわかります。これは、サーバーの実装 (この例では「demo_sse.php」) によるものではなく、3 ~ 4 秒ごとに発生する再接続によるものです。

上記の例に次を追加すると:

source.onerror=function(event)
{
  document.getElementById("result").innerHTML+=source.readyState+ "<br />";
};

readyState が 0 であることが明確にわかります。つまり、「接続がまだ確立されていないか、接続が閉じられており、ユーザー エージェントが再接続しています」という意味です。(公式の EventSorce API ドキュメントから取得)。

サーバー側のスクリプトも自分で書きました。コードは次のとおりです(python bottle Webフレームワークを使用)。

@route('/events')
def positions():  
    response.content_type = 'text/event-stream'
    response.set_header('Cache-Control', 'no-cache')
    now = datetime.datetime.now().time().replace(microsecond=0)
    return  "data: %s\n\n"%now

そして、私は同じことを取得します。3 ~ 4 秒ごとに再接続します。

私が興味を持っているのは、セッションを通じて接続がどのように維持されるかです。

助けてくれてありがとう、オマー。

4

2 に答える 2

0

ボトルが Content-Length ヘッダーを設定していないことを確認してください。この行は私には疑わしいように見えます。

この問題の bottleで提案されているように、反復子を返すと、おそらく必要なことが行われます。

@route('/events')
def positions():
  yield 'START'
  while stream_alive:
      some_event.wait()
      yield some_data()
  yield 'END'
于 2012-08-23T13:30:32.443 に答える