如何使用 FastAPI 构建 WebSocket 服务器: 新手指南

WebSocket 通信是现代 Web 开发的一个重要方面,它支持客户端和服务器之间的实时、双向数据传输。在这个适合初学者的指南中,我们将探讨如何使用 FastAPI Web 框架和 websockets 库设置 WebSocket 服务器。FastAPI 的简单性和自动文档生成功能使其成为初级开发人员深入了解 WebSocket 开发的绝佳选择。

前提条件

在开始之前,请确保具备以下条件:

  • 已安装 Python(版本 3.7 或更高版本)。
  • 对 Python 和 Web 开发概念有基本了解。

设置 FastAPI 应用程序

FastAPI 是一个现代 Python 网络框架,以速度快、易使用而著称。我们将用它来创建一个 WebSocket 服务器。

首先,创建一个虚拟环境以隔离项目依赖关系。打开终端并运行:

python -m venv websocket-env

激活虚拟环境:

  • 在 Windows 上:
websocket-env\Scripts\activate
  • 在 macOS 和 Linux 上:
source websocket-env/bin/activate

安装所需的库:

pip install fastapi uvicorn websockets

创建一个 FastAPI 应用程序:

from fastapi import FastAPI
import websockets

app = FastAPI()

@app.websocket("/ws")
async def websocket_endpoint(websocket: websockets.WebSocket):
    await websocket.accept()
    while True:
        data = await websocket.receive_text()
        await websocket.send_text(f"You sent: {data}")

在这段代码中,我们导入了 FastAPI 和 websockets,并创建了一个 FastAPI 应用程序实例。我们使用 @app.websocket 装饰器定义了一个 WebSocket 路由,它在 /ws 端点监听传入的 WebSocket 连接。

处理 WebSocket 连接

websocket_endpoint 函数用于处理 WebSocket 连接。下面是它的工作原理

  • await websocket.accept(): 该行接受 WebSocket 连接并允许双向通信。
  • 然后,函数进入一个循环,使用 await websocket.receive_text() 连续接收消息,并使用 await websocket.send_text() 发送响应。

运行 WebSocket 服务器

要使用 WebSocket 服务器运行 FastAPI 应用程序,请使用以下uvicorn命令:

uvicorn your_app_module_name:app --host 0.0.0.0 --port 8000 --reload

your_app_module_name 替换为包含 FastAPI 应用程序的 Python 脚本名称。服务器的访问地址为 ws://localhost:8000/ws。

测试 WebSocket 服务器

要测试 WebSocket 服务器,可以使用 JavaScript 的 WebSocket API 创建 WebSocket 客户端或使用任何 WebSocket 客户端工具。这是一个简单的 JavaScript 示例:

const socket = new WebSocket("ws://localhost:8000/ws");

socket.onopen = () => {
  socket.send("Hello, WebSocket Server!");
};

socket.onmessage = (event) => {
  console.log("Server says: " + event.data);
};

// Close the WebSocket connection when done
socket.onclose = () => {
  console.log("WebSocket connection closed.");
};

该客户端连接到 WebSocket 服务器,发送信息并记录服务器的响应。

小结

您已经使用 FastAPI 和 websockets 成功架设了 WebSocket 服务器。WebSocket 通信是构建实时应用程序的强大工具,FastAPI 的简单性使初级开发人员也能使用它。

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/im/34951.html

(0)

相关推荐

发表回复

登录后才能评论