0

我试图让我的 Vue.js 应用程序使用 websockets 与我的 FastAPI(基于 starlette)本地服务器通信。我尝试使用与他们的示例完全相同的代码:https ://fastapi.tiangolo.com/tutorial/websockets/ 。但是发生了一些奇怪的事情,因为我的服务器无法启动原因:AttributeError: 'FastAPI' object has no attribute 'websocket'. 这很奇怪,因为这个确切的代码是 FastAPI 的官方文档。
之后我使用了 Starlette 示例代码:https ://www.starlette.io/websockets/ 。但是,当我尝试连接到它时,FastApi 会打印到终端:WARNING: Invalid HTTP request received.
我尝试使用另一个客户端,简单 WebSocket 客户端:https ://chrome.google.com/webstore/detail/simple-websocket-client/pfdhoblngboilpfeibdedpjgfnlcodoo,但同样的错误出现在终端上。
我在这里做错了什么?首先,我发现 FastAPI 代码似乎无法在我的计算机上运行,​​这很奇怪,有人知道为什么吗?

提前致谢!

4

2 回答 2

1

显然,WebSocket 功能是在刚刚发布的 FastAPI 0.24 中添加的。我使用的是旧版本。

于 2019-05-29T07:32:43.917 回答
0

运行pip install websockets并配置如下:

from fastapi import FastAPI, WebSocket

@app.websocket("/ws")
async def send_data(websocket:WebSocket):
    print('CONNECTING...')
    await websocket.accept()
    while True:
        try:
            await websocket.receive_text()
            resp = {
            "message":"message from websocket"
            }
            await websocket.send_json(resp)
        except Exception as e:
            print(e)
            break
    print("CONNECTION DEAD...")
于 2021-07-13T06:02:38.470 回答