首頁  >  文章  >  後端開發  >  如何使用 FastAPI 在 Jinja2 中實現 WebSocket 進行即時資料更新?

如何使用 FastAPI 在 Jinja2 中實現 WebSocket 進行即時資料更新?

Barbara Streisand
Barbara Streisand原創
2024-10-21 06:12:30475瀏覽

How to Implement WebSockets for Real-Time Data Updates in Jinja2 with FastAPI?

如何使用 FastAPI 取得 Jinja2 範本中更新的項目清單?

在 Jinja2 範本中,您可以使用循環渲染現有數據,例如在部落格文章。然而,當新增項目時,Jinja2 本身並沒有提供動態更新清單的方法。

使用 WebSocket 的潛在解決方案

Web 應用程式中即時更新的常見解決方案是使用 WebSocket。以下Python程式碼提供了一個WebSocket端點:

<code class="python">from fastapi import FastAPI, WebSocket, WebSocketDisconnect
from fastapi.templating import Jinja2Templates

app = FastAPI()
templates = Jinja2Templates(directory="templates")

class ConnectionManager:
    def __init__(self):
        self.active_connections = []

    async def connect(self, websocket: WebSocket):
        await websocket.accept()
        self.active_connections.append(websocket)

    def disconnect(self, websocket: WebSocket):
        self.active_connections.remove(websocket)

    async def broadcast(self, message: str):
        for connection in self.active_connections:
            await connection.send_json(message)

manager = ConnectionManager()</code>

在index.html範本中,我們建立一個WebSocket連線並監聽傳入訊息:

<code class="html"><script>
  var ws = new WebSocket("ws://localhost:8000/ws");
  ws.onmessage = function(event) {
    // Handle new data and update UI accordingly
  };
</script></code>

然後WebSocket端點可以向連接的客戶端廣播任何更新。這允許即時動態顯示更新的評論清單。

注意:

雖然 WebSockets 是此用例的可行解決方案,但考慮 Alpine JS 等替代方法也很重要x-for 循環或 ReactJS 用於更複雜的 UI 交互。

以上是如何使用 FastAPI 在 Jinja2 中實現 WebSocket 進行即時資料更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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