python fastapi后端实现主动给前端传数据
时间: 2023-09-24 21:02:56 浏览: 432
FastAPI后端查询数据在前端进行分页展示(html、py文件)
要实现后端主动给前端传数据,可以使用WebSocket协议。在FastAPI中,可以使用`fastapi-websocket`库来实现WebSocket功能。以下是一个简单的示例:
```python
from fastapi import FastAPI, WebSocket
app = FastAPI()
# WebSocket连接处理函数
async def websocket_handler(websocket: WebSocket):
await websocket.accept()
# 定期向前端发送数据
while True:
await websocket.send_json({'message': 'hello world'})
# WebSocket路由
@app.websocket('/ws')
async def websocket_endpoint(websocket: WebSocket):
await websocket_handler(websocket)
```
在这个示例中,`/ws`是WebSocket的路由,`websocket_handler`是WebSocket连接处理函数。在处理函数中,我们使用`accept()`方法接受WebSocket连接,并使用`send_json()`方法向前端发送JSON格式的数据。在路由函数中,我们将`websocket_handler`作为参数传递给`websocket_endpoint`函数来处理WebSocket连接。
在前端,你可以使用JavaScript来连接WebSocket并接收数据,示例代码如下:
```javascript
const socket = new WebSocket('ws://localhost:8000/ws');
socket.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log(data.message);
}
```
在这个示例中,我们使用`WebSocket`对象连接到`ws://localhost:8000/ws`地址,并使用`onmessage`事件处理函数接收数据。在事件处理函数中,我们解析JSON格式的数据,并打印出`message`字段的值。
阅读全文