WebSocket 是一种在 Web 应用程序中实现双向通信的协议,它允许客户端和服务器之间进行实时的、低延迟的通信。FastAPI 是一个基于 Python 的现代 Web 框架,它提供了内置支持 WebSocket 的功能。本文将介绍在 FastAPI 中如何使用 WebSocket 协议,包括如何使用、实践案例以及在 IDE 编辑器中运行的步骤。
FastAPI 中使用 WebSocket
首先,确保你已经安装了 FastAPI 和 WebSocket。你可以通过以下命令使用 pip 安装 FastAPI 和 WebSocket:
pip install fastapi
pip install websockets
接下来,我们将创建一个简单的 FastAPI 应用程序,并添加 WebSocket 的支持。请在你的 IDE 编辑器中创建一个名为 fastapi-ws.py
的文件,并将以下代码粘贴到其中:
from fastapi import FastAPI, WebSocket
app = FastAPI()
@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
while True:
data = await websocket.receive_text()
await websocket.send_text(f"Message received: {data}")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
在上面的代码中,我们创建了一个 /ws
的 WebSocket 路由,用于处理 WebSocket 连接。在 websocket_endpoint()
函数中,我们使用 WebSocket
类作为参数,并调用 accept()
方法接受 WebSocket 连接。然后,我们通过一个无限循环来处理接收和发送消息的逻辑。
运行程序
要运行 FastAPI 应用程序,并测试 WebSocket 功能,我们需要使用 uvicorn
这样的 ASGI 服务器。请确保你已经安装了 uvicorn
。你可以通过以下命令使用 pip 安装它:
pip install uvicorn
在你的 IDE 编辑器中,打开终端并导航到存储 fastapi-ws.py
文件的目录。然后运行以下命令启动应用程序:
uvicorn fastapi-ws:app --reload
现在,你可以使用 WebSocket 客户端工具(如浏览器的开发者工具中的 Console 或专门的 WebSocket 客户端应用程序)连接到 ws://localhost:8000/ws
。你将能够发送消息并接收来自服务器的回复。
使用 Apifox 连接调试
Apifox 是一个集 API 文档、API 调试、API Mock和API 自动化测试于一体的 API 协作平台,支持 http(s)、gRPC、WebSocket 等协议,我们可以通过 Apifox 来更方便的调试 FastAPI 接口。
在 Apifox 中新建一个项目后,在项目中添加 WebSocket 接口,并填入 ws://localhost:8000/ws
点击连接
按钮后,即可填入信息并发送,最后将会收到响应信息:
总结
本文介绍了在 FastAPI 中使用 WebSocket 协议的方法。通过创建一个 WebSocket 路由和使用 WebSocket
类处理连接,我们能够实现实时的双向通信。在实践案例中,我们展示了一个简单的示例,其中接收客户端发送的消息并将其回显给客户端。
FastAPI 提供了强大的内置 WebSocket 支持,使得在 Web 应用程序中实现实时通信变得更加简单和高效。同时,使用 Apifox 进行接口调试,大大提高了项目的开发效率,图形化的操作界面也更加方便。
知识扩展
了解更多 FastAPI 相关使用技巧:
参考链接:
- FastAPI 官网:https://fastapi.tiangolo.com/
- WebSocket 协议规范:https://datatracker.ietf.org/doc/html/rfc6455