推荐答案
在 FastAPI 中使用 WebSocket 可以通过 WebSocket
类来实现。以下是一个简单的示例:
-- -------------------- ---- ------- ---- ------- ------ -------- --------- --- - --------- --------------------- ----- --- ----------------------------- ----------- ----- ------------------ ----- ----- ---- - ----- ------------------------ ----- ----------------------------- ---- ---- --------
在这个示例中,我们创建了一个 WebSocket 端点 /ws
,客户端可以通过这个端点与服务器进行双向通信。websocket.accept()
用于接受客户端的连接请求,websocket.receive_text()
用于接收客户端发送的文本消息,websocket.send_text()
用于向客户端发送文本消息。
本题详细解读
WebSocket 的基本概念
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。与 HTTP 请求-响应模型不同,WebSocket 允许服务器和客户端在任何时候互相发送消息,这使得它非常适合实时应用程序,如聊天应用、在线游戏等。
FastAPI 中的 WebSocket 实现
在 FastAPI 中,WebSocket 的实现非常简单。首先,你需要导入 WebSocket
类,然后定义一个 WebSocket 端点。这个端点可以通过 @app.websocket
装饰器来定义。
1. 接受连接
在 WebSocket 端点函数中,首先需要调用 await websocket.accept()
来接受客户端的连接请求。这一步是必须的,否则客户端无法与服务器建立 WebSocket 连接。
2. 接收消息
通过 await websocket.receive_text()
可以接收客户端发送的文本消息。你也可以使用 websocket.receive_bytes()
来接收二进制数据。
3. 发送消息
通过 await websocket.send_text()
可以向客户端发送文本消息。同样,你也可以使用 websocket.send_bytes()
来发送二进制数据。
4. 保持连接
通常,WebSocket 连接会保持打开状态,直到客户端或服务器主动关闭连接。在上面的示例中,我们使用了一个无限循环来保持连接的活跃状态,并持续接收和发送消息。
示例代码解析
-- -------------------- ---- ------- ---- ------- ------ -------- --------- --- - --------- --------------------- ----- --- ----------------------------- ----------- ----- ------------------ ----- ----- ---- - ----- ------------------------ ----- ----------------------------- ---- ---- --------
@app.websocket("/ws")
:定义了一个 WebSocket 端点/ws
。await websocket.accept()
:接受客户端的 WebSocket 连接请求。while True:
:保持连接的活跃状态。data = await websocket.receive_text()
:接收客户端发送的文本消息。await websocket.send_text(f"Message text was: {data}")
:向客户端发送处理后的消息。
总结
通过 FastAPI 的 WebSocket
类,你可以轻松实现 WebSocket 通信。WebSocket 非常适合需要实时双向通信的应用场景,FastAPI 提供了简洁的 API 来处理 WebSocket 连接、接收和发送消息。