Skip to content
Extraits de code Groupes Projets
main.py 31,7 ko
Newer Older
  • Learn to ignore specific revisions
  •             for user_id, user_websockets in websocket_users[session_id].items():
                    if user_id == current_user.id:
                        continue
    
                    for user_websocket in user_websockets:
                        await user_websocket.send_text(data)
        except:
            websocket_users[session_id][current_user.id].remove(websocket)
    
            try:
                await websocket.close()
            except:
                pass
    
    @websocketRouter.websocket("/global")
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    async def websocket_global(
    
        token: str, websocket: WebSocket, db: Session = Depends(get_db)
    ):
        try:
            payload = jwt.decode(token, config.JWT_SECRET_KEY, algorithms=["HS256"])
        except ExpiredSignatureError:
            await websocket.close(code=1008, reason="Token expired")
            return
        except jwt.JWTError:
            await websocket.close(code=1008, reason="Invalid token")
            return
    
        current_user = crud.get_user(db, user_id=payload["subject"]["uid"])
        if current_user is None:
            await websocket.close(code=1008, reason="Invalid user")
            return
    
        await websocket.accept()
    
        websocket_users_global[current_user.id].add(websocket)
    
        try:
            while True:
                data = await websocket.receive_text()
                for user_id, user_websockets in websocket_users_global.items():
                    if user_id == current_user.id:
                        continue
    
                    for user_websocket in user_websockets:
                        await user_websocket.send_text(data)
        except:
            websocket_users_global[current_user.id].remove(websocket)
            try:
                await websocket.close()
            except:
                pass
    
    
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    v1Router.include_router(authRouter)
    v1Router.include_router(usersRouter)
    v1Router.include_router(sessionsRouter)
    
    v1Router.include_router(studyRouter)
    
    v1Router.include_router(websocketRouter)
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    v1Router.include_router(testRouter)
    v1Router.include_router(studiesRouter)
    
    v1Router.include_router(chatRouter)
    
    Brieuc Dubois's avatar
    Brieuc Dubois a validé
    apiRouter.include_router(v1Router)
    app.include_router(apiRouter)