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...")