簡介
在當今的數位環境中,即時通訊非常重要。傳統的 HTTP 由於其請求-回應模型和固有的延遲而存在不足。隨著業務和應用程式越來越需要即時資料傳輸(無論是即時股票更新、多人遊戲還是協作工具),WebSocket 已成為一項改變遊戲規則的技術。與 HTTP 不同,WebSocket 支援全雙工、雙向通信,允許伺服器和用戶端透過單一持久連接即時發送和接收訊息。這不僅減少了開銷,還顯著提高了 Web 應用程式的效能和回應能力。
什麼是 WebSocket
WebSocket 是一種通訊協議,可透過單一長期 TCP 連線提供全雙工通訊通道。這意味著一旦客戶端和伺服器之間建立了 WebSocket 連接,雙方就可以同時連續地發送和接收數據,而無需重新開啟連接。 WebSocket 被設計為高效且低延遲,使其成為即時應用程式的理想選擇。
為什麼要使用 WebSocket ?
WebSockets 用於客戶端和伺服器之間需要即時通訊的場景。與遵循請求-回應模型(客戶端必須發起每個請求)的傳統 HTTP 不同,WebSocket 允許雙向通訊。這使得 WebSocket 在需要將資料從伺服器即時推送到客戶端而無需客戶端請求的應用程式中特別有用。
現實世界用例
WebSocket 與 HTTP
溝通模型
連線處理
效率
延遲
用例
WebSocket 的優點
WebSocket 的工作原理
WebSocket 用例
使用 Python 和 WebSocket 建立即時應用程式
讓我們使用 WebSockets 與 Python(使用 FastAPI)和 Streamlit 建立一個即時應用程式。
1。設定 FastAPI WebSocket 伺服器
此程式碼使用 FastAPI 設定 WebSocket 伺服器。
from fastapi import FastAPI, WebSocket, WebSocketDisconnect from typing import List app = FastAPI() class ConnectionManager: def __init__(self): self.active_connections: List[WebSocket] = [] 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_text(message) manager = ConnectionManager() @app.websocket("/ws") async def websocket_endpoint(websocket: WebSocket): await manager.connect(websocket) try: while True: data = await websocket.receive_text() await manager.broadcast(f"Message: {data}") except WebSocketDisconnect: manager.disconnect(websocket)
此 WebSocket 伺服器可以處理多個連線並向所有連線的用戶端廣播訊息。
2。 Streamlit 前端
現在,讓我們使用 Streamlit 建立一個即時應用程序,連接到 WebSocket 伺服器並接收即時更新。
import streamlit as st import asyncio import websockets async def websocket_receive(): uri = "ws://localhost:8000/ws" async with websockets.connect(uri) as websocket: while True: message = await websocket.recv() st.write(f"Received: {message}") st.title("Real-Time WebSocket Client") if st.button("Connect to WebSocket"): st.write("Connected!") asyncio.run(websocket_receive())
說明:當使用者按一下「連線到 WebSocket」按鈕時,Streamlit 前端會與 WebSocket 伺服器建立連線並偵聽訊息。
3。運行應用程式
運行 FastAPI 伺服器:
uvicorn server:app --reload
運行 Streamlit 應用程式:
streamlit run your_script.py
即時溝通的關鍵步驟:
以上是使用 Python 了解 WebSocket的詳細內容。更多資訊請關注PHP中文網其他相關文章!