searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

使用FastAPI构建实时WebSocket应用

2024-10-25 08:57:27
8
0

FastAPI 和 WebSocket 简介

FastAPI是基于Starlette框架的,具有以下优点:

  • 高性能:支持异步编程,能处理大量并发请求。
  • 易于使用:基于Python类型提示,自动生成OpenAPI文档。
  • 支持WebSocket:提供对WebSocket的原生支持,使构建实时应用变得简单。

WebSocket是一种在客户端和服务器之间建立持久连接的协议,允许双向通信,适用于聊天应用、在线游戏等场景。

环境准备

确保你已经安装了FastAPI和Uvicorn。可以使用以下命令安装:

pip install fastapi "uvicorn[standard]"

创建基本的WebSocket应用

以下是一个简单的WebSocket应用示例,它实现了客户端和服务器之间的消息传递。

  1. 创建FastAPI应用
from fastapi import FastAPI, WebSocket
from fastapi.responses import HTMLResponse

app = FastAPI()

html = """
<!DOCTYPE html>
<html>
    <head>
        <title>WebSocket Chat</title>
    </head>
    <body>
        <h1>WebSocket Chat</h1>
        <form id="form">
            <input type="text" id="message" autocomplete="off"/>
            <button>Send</button>
        </form>
        <ul id="messages"></ul>
        <script>
            const ws = new WebSocket("ws://localhost:8000/ws");
            const form = document.getElementById('form');
            const input = document.getElementById('message');
            const messages = document.getElementById('messages');

            ws.onmessage = function(event) {
                const item = document.createElement('li');
                item.textContent = event.data;
                messages.appendChild(item);
            };

            form.onsubmit = function(event) {
                event.preventDefault();
                ws.send(input.value);
                input.value = '';
            };
        </script>
    </body>
</html>
"""
  1. 定义WebSocket端点
@app.get("/")
async def get():
    return HTMLResponse(html)

@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 text was: {data}")
  1. 运行应用

把以上代码放到main.py文件中,然后使用以下命令运行应用:

uvicorn main:app --reload

结论

使用FastAPI构建WebSocket应用非常简单高效。本文示例展示了如何快速设置一个基本的WebSocket聊天应用。你可以在此基础上扩展功能,例如添加用户身份验证、管理多个连接等。

通过结合FastAPI的高性能和WebSocket的实时通信能力,可以轻松构建出高效的实时应用。希望这篇文章对你有所帮助!

0条评论
0 / 1000
全****琪
3文章数
0粉丝数
全****琪
3 文章 | 0 粉丝
全****琪
3文章数
0粉丝数
全****琪
3 文章 | 0 粉丝
原创

使用FastAPI构建实时WebSocket应用

2024-10-25 08:57:27
8
0

FastAPI 和 WebSocket 简介

FastAPI是基于Starlette框架的,具有以下优点:

  • 高性能:支持异步编程,能处理大量并发请求。
  • 易于使用:基于Python类型提示,自动生成OpenAPI文档。
  • 支持WebSocket:提供对WebSocket的原生支持,使构建实时应用变得简单。

WebSocket是一种在客户端和服务器之间建立持久连接的协议,允许双向通信,适用于聊天应用、在线游戏等场景。

环境准备

确保你已经安装了FastAPI和Uvicorn。可以使用以下命令安装:

pip install fastapi "uvicorn[standard]"

创建基本的WebSocket应用

以下是一个简单的WebSocket应用示例,它实现了客户端和服务器之间的消息传递。

  1. 创建FastAPI应用
from fastapi import FastAPI, WebSocket
from fastapi.responses import HTMLResponse

app = FastAPI()

html = """
<!DOCTYPE html>
<html>
    <head>
        <title>WebSocket Chat</title>
    </head>
    <body>
        <h1>WebSocket Chat</h1>
        <form id="form">
            <input type="text" id="message" autocomplete="off"/>
            <button>Send</button>
        </form>
        <ul id="messages"></ul>
        <script>
            const ws = new WebSocket("ws://localhost:8000/ws");
            const form = document.getElementById('form');
            const input = document.getElementById('message');
            const messages = document.getElementById('messages');

            ws.onmessage = function(event) {
                const item = document.createElement('li');
                item.textContent = event.data;
                messages.appendChild(item);
            };

            form.onsubmit = function(event) {
                event.preventDefault();
                ws.send(input.value);
                input.value = '';
            };
        </script>
    </body>
</html>
"""
  1. 定义WebSocket端点
@app.get("/")
async def get():
    return HTMLResponse(html)

@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 text was: {data}")
  1. 运行应用

把以上代码放到main.py文件中,然后使用以下命令运行应用:

uvicorn main:app --reload

结论

使用FastAPI构建WebSocket应用非常简单高效。本文示例展示了如何快速设置一个基本的WebSocket聊天应用。你可以在此基础上扩展功能,例如添加用户身份验证、管理多个连接等。

通过结合FastAPI的高性能和WebSocket的实时通信能力,可以轻松构建出高效的实时应用。希望这篇文章对你有所帮助!

文章来自个人专栏
javassss
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0