简介
在当今的数字环境中,实时通信非常重要。传统的 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中文网其他相关文章!