Как получить онлайн-пользователей с помощью Websockets в FastAPI

#python #websocket #fastapi

Вопрос:

может ли кто-нибудь помочь мне получить онлайн-пользователей с помощью Websockets в FastAPI? Я попытался использовать широковещательную передачу, но не смог получить желаемый результат. Кто-нибудь может мне в этом помочь? Вот мой код:

 class ConnectionManager:
    def __init__(self):
        self.active_connections: List[Dict[str, WebSocket]] = []

    async def connect(self, user: str, websocket: WebSocket):
        await websocket.accept()
        self.active_connections.append({'user': user, 'ws': websocket})

    def disconnect(self, user: str, websocket: WebSocket):
        self.active_connections.remove({'user': user, 'ws': websocket})

    @staticmethod
    async def send_personal_message(message: dict, websocket: WebSocket):
        # Send personal message
        await websocket.send_json(message)

    async def send_other_message(self, message: dict, user: str):
        # Send personal message
        for connection in self.active_connections:
            if connection["user"] == user:
                await connection['ws'].send_json(message)

    async def broadcast(self, data: dict):
        # Broadcast message
        for connection in self.active_connections:
            await connection['ws'].send_json(data)


manager = ConnectionManager()


# region Chat
@router.websocket("/ws/{user}")
async def websocket_endpoint(websocket: WebSocket, user: str):
    await manager.connect(user, websocket)

    await manager.broadcast({"user": user, "message": ""})

    try:
        while True:
            data = await websocket.receive_json()

            send_user = data.get("send_user")
            if send_user:
                # await manager.send_personal_message(data, websocket)
                await manager.send_other_message(data, send_user)
            else:
                await manager.broadcast({"user": user, "message": ""})

    except WebSocketDisconnect:
        manager.disconnect(user, websocket)
        await manager.broadcast({"user": user, "message": ""})
 

Когда приложение чата открыто, я вижу себя онлайн-пользователем, но я не вижу никого другого, хотя я пытался открыть много вкладок, я просто вижу себя онлайн. Мы будем очень признательны за любую помощь. Заранее спасибо!