首頁 >web前端 >js教程 >如何有效地將即時資料更新傳輸到 Flask HTML 模板中?

如何有效地將即時資料更新傳輸到 Flask HTML 模板中?

DDD
DDD原創
2024-12-09 16:47:14965瀏覽

How Can I Efficiently Stream Live Data Updates into Flask HTML Templates?

使用Flask 進行串流資料更新

由於伺服器上呈現的範本的靜態特性,將即時資料流整合到HTML 範本中可能會帶來挑戰。但是,有一些方法可以實現此功能。

要在不動態修改模板的情況下傳輸數據,可以使用 JavaScript。透過向串流端點發出請求,客戶端 JavaScript 可以即時讀取並顯示資料。這種方法會帶來複雜性,但可以更好地控制輸出外觀。

例如,以下程式碼示範如何顯示最新值和所有接收到的值的日誌:

setInterval(() => {
  var latest = document.getElementById('latest');
  var output = document.getElementById('output');
  var xhr = new XMLHttpRequest();
  xhr.open('GET', '{{ url_for('stream') }}');
  xhr.send();
  var position = 0;

  function handleNewData() {
    var messages = xhr.responseText.split('\n');
    messages.slice(position, -1).forEach(function(value) {
      latest.textContent = value;
      var item = document.createElement('li');
      item.textContent = value;
      output.appendChild(item);
    });
    position = messages.length - 1;
  }

  timer = setInterval(function() {
    handleNewData();
    if (xhr.readyState === XMLHttpRequest.DONE) {
      clearInterval(timer);
      latest.textContent = 'Done';
    }
  }, 1000);
}, 1000);

或者,

<p>This is all the output:</p>
<iframe src="{{ url_for('stream') }}"></iframe>
iframe {
  width: 300px;
  height: 200px;
}
@app.route("/stream")
def stream():
    @stream_with_context
    def generate():
        yield render_template_string(
            '<link rel=stylesheet href="{{ url_for("static", filename="stream.css") }}">'
        )

        for i in range(500):
            yield render_template_string(
                "<p>{{ i }}: {{ s }}</p>\n", i=i, s=sqrt(i)
            )
            sleep(1)

    return app.response_class(generate())

最終,可以選擇透過 JavaScript 或

以上是如何有效地將即時資料更新傳輸到 Flask HTML 模板中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn