FastAPI 中如何使用 WebSocket?

推荐答案

在 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 连接、接收和发送消息。

纠错
反馈