はじめに
今日のデジタル環境では、リアルタイムのコミュニケーションが重要です。従来の HTTP は、その要求応答モデルと固有の遅延により不十分です。ビジネスやアプリケーションでは、リアルタイムの株式更新、マルチプレイヤー ゲーム、共同作業ツールなど、即時データ転送の需要がますます高まる中、WebSocket が革新的なテクノロジとして登場しました。 HTTP とは異なり、WebSocket は全二重の双方向通信を可能にし、サーバーとクライアントの両方が単一の永続的な接続を介してリアルタイムでメッセージを送受信できるようにします。これにより、オーバーヘッドが削減されるだけでなく、Web アプリケーションのパフォーマンスと応答性も大幅に向上します。
WebSocket とは
WebSocket は、単一の存続期間の長い TCP 接続を介して全二重通信チャネルを提供する通信プロトコルです。これは、クライアントとサーバー間で WebSocket 接続が確立されると、接続を再度開くことなく、双方が同時に継続的にデータを送受信できることを意味します。 WebSocket は効率的かつ低遅延になるように設計されており、リアルタイム アプリケーションに最適です。
WebSocket を使用する理由?
WebSocket は、クライアントとサーバー間のリアルタイム通信が必要なシナリオで使用されます。クライアントがすべてのリクエストを開始する必要があるリクエスト/レスポンス モデルに従う従来の HTTP とは異なり、WebSocket では双方向通信が可能です。このため、WebSocket は、クライアントが要求することなく、サーバーからクライアントにリアルタイムでデータをプッシュする必要があるアプリケーションで特に役立ちます。
現実世界の使用例
WebSocket と HTTP
コミュニケーションモデル
接続処理
効率
レイテンシ
ユースケース
WebSocket の利点
WebSocket の仕組み
WebSocket の使用例
Python と WebSocket を使用したリアルタイム アプリケーションの構築
Python (FastAPI を使用) と Streamlit で WebSocket を使用してリアルタイム アプリケーションを構築しましょう。
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 中国語 Web サイトの他の関連記事を参照してください。