FastAPI 使用 WebSocket创建实时应用程序

136 篇文章 16 订阅

超文本传输协议(或 HTTP)是当今互联网上最常用的协议之一。 它允许客户端获取资源,例如 HTML 页面和图像。

客户端(通常是浏览器)向服务器请求资源(图像、CSS 文件等),服务器响应请求的数据。它是一个严格的单向协议。服务器只会在客户端请求时发送数据。

打开一个连接,请求你想要的东西,等待响应,然后关闭连接。 这就是 HTTP 的基础。 当您处理文档时,它工作正常。 但是,当涉及到更多“实时”应用程序(例如游戏和聊天)时,您开始遇到这种方法的一些问题。

由于当资源发生变化时,服务器无法向客户端发送消息,因此客户端将不得不不断向服务器询问资源数据。 它浪费资源,因为为所有请求创建了一个新连接,即使可能没有任何更改。 这种方法称为轮询,虽然有一些方法可以将其最小化(例如长轮询),但它们只是解决问题的方法。

网络套接字

这就是 WebSocket 的想法诞生的地方。它允许 TCP 连接保持活动状态,因此服务器和客户端都可以相互发送数据,而无需每次都创建新连接。

它使用 HTTP 作为初始传输机制,但“升级”了连接。然后创建一个双向、全双工通信通道。

FastAPI

FastAPI 是一个非常酷的开源框架,可以使用 Python 构建 API。它的语法类似于 Flask,所以如果你使用它,你应该不会有任何学习上的困难。

它比 Flask 有一些优势,例如:

  • 它很快(与 Flask 相比);

  • 它有自动文档(OpenAPI);

  • 它可以使用 async 函数;

  • 支持websocket;

  • 更多

示例

在本教程中,我们将创建一个使用 WebSocket 连接更新图表的简单应用程序。

我们将使用的软件包:

完整代码

服务器
客户端

本文完整代码

详情参阅 - 亚图跨际

Python FastAPI 是一个高性能、易于使用、快速编写 API 的 Web 框架。如果你想要在 FastAPI 中增加 WebSocket,可以使用第三方库 fastapi-websocket 来实现。 首先,你需要在你的项目中安装 fastapi-websocket 库。你可以使用 pip 命令进行安装: ``` pip install fastapi-websocket ``` 安装完成后,在你的 FastAPI 项目中导入 fastapi_websocket 包。然后,你可以通过创建一个 WebSocketEndpoint 类来实现 WebSocket: ```python from fastapi import FastAPI from fastapi_websocket import WebSocket app = FastAPI() class WebSocketEndpoint: def __init__(self, ws: WebSocket): self.ws = ws async def send_message(self, message: str): await self.ws.send_text(message) @app.websocket("/ws") async def websocket_endpoint(ws: WebSocket): websocket = WebSocketEndpoint(ws) await websocket.send_message("Hello, WebSocket!") ``` 在上面的代码中,我们创建了一个 WebSocketEndpoint 类来实现 WebSocket。这个类中包含了一个 send_message 方法,用来发送消息给客户端。然后,在 websocket_endpoint 函数中,我们创建了一个 WebSocketEndpoint 对象,并通过 send_message 方法发送一条消息。 最后,我们将这个 WebSocketEndpoint 函数装饰为 /ws 路径的 WebSocket: ```python @app.websocket("/ws") async def websocket_endpoint(ws: WebSocket): websocket = WebSocketEndpoint(ws) await websocket.send_message("Hello, WebSocket!") ``` 如果你想要了解更多关于 FastAPIfastapi-websocket 的内容,可以查看官方文档:https://fastapi.tiangolo.com/tutorial/websockets/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值