Невозможно управлять подключением нескольких пользователей к веб-сокету в fastapiPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Невозможно управлять подключением нескольких пользователей к веб-сокету в fastapi

Сообщение Гость »


Я хочу хранить пользовательские соединения websocket и управлять ими в словаре, чтобы я мог создавать собственные события для каждого пользователя.

вот очень простая реализация того, чего я пытаюсь достичь:

из fastapi импортировать FastAPI, WebSocket приложение = ФастAPI() кон = {} @app.websocket("/ws/{id}") асинхронное определение websocket_endpoint (websocket: WebSocket, id: str): пытаться: печать("подключиться", идентификатор) ожидайте websocket.accept() con[id] = веб-сокет print("проверка", con.keys()) для uid в кон: печать (UID) ожидайте con[uid].send_text("привет") кроме исключения как e: распечатать(е) и вот журнал:

ИНФОРМАЦИЯ: Uvicorn работает по адресу http://127.0.0.1:8000 (нажмите CTRL+C, чтобы выйти) ИНФОРМАЦИЯ: Запущен процесс перезагрузки [26605] с использованием StatReload. ИНФОРМАЦИЯ: Запущен серверный процесс [26610] ИНФОРМАЦИЯ: Ожидание запуска приложения. ИНФОРМАЦИЯ: Запуск приложения завершен. подключить 1 ИНФОРМАЦИЯ: ('127.0.0.1', 48346) - "WebSocket /ws/1" [принято] проверьте dict_keys(['1']) 1 ИНФО: соединение открыто подключить 2 ИНФОРМАЦИЯ: ('127.0.0.1', 48354) - "WebSocket /ws/2" [принято] проверьте dict_keys(['1', '2']) 1 Неожиданное сообщение ASGI «websocket.send» после отправки «websocket.close». ИНФО: соединение открыто Когда я подключаюсь к веб-сокету с клиентом 1, все работает как положено, и я получаю сообщение привет.

Журнал клиента 1:

ПОДКЛЮЧЕНИЕ: WS://LOCALHOST:8000/WS/1 ПОДКЛЮЧЕНИЕ ГОТОВО привет СОЕДИНЕНИЕ ЗАКРЫТО! но когда клиент Second подключается к websocket, он возвращает исключение на сервере:

Неожиданное сообщение ASGI «websocket.send» после отправки «websocket.close». и клиент 2 не получает никакого сообщения:

ПОДКЛЮЧЕНИЕ: WS://LOCALHOST:8000/WS/1 ПОДКЛЮЧЕНИЕ ГОТОВО СОЕДИНЕНИЕ ЗАКРЫТО! Я запускаю приложение следующим образом:

uvicorn main:app --reload Что я здесь делаю не так?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»