FastAPI websocket не может подключиться

Я пытаюсь разрешить моему приложению Vue.js взаимодействовать с моим локальным сервером 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.
Я попытался использовать другой клиент, Simple WebSocket Client: https://chrome.google.com/webstore/detail/simple-websocket-client/pfdhoblngboilpfeibdedpjgfnlcodoo, но такая же ошибка появляется в терминале.
Что я здесь не так делаю? Во-первых, я нахожу странным, что код FastAPI не работает на моем компьютере, кто-нибудь знает почему?

Заранее спасибо!

2 ответа

Решение

По-видимому, функциональность WebSocket была добавлена ​​в FastAPI 0.24, который был только что выпущен. Я использовал более старую версию.

запустить 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...")
Другие вопросы по тегам