fix: send and recive message

This commit is contained in:
2026-05-09 10:16:15 +03:00
parent cbd764f76b
commit 0e7709c95e
8 changed files with 624 additions and 42 deletions
+2 -2
View File
@@ -51,7 +51,7 @@ async def get_current_superuser(current_user: UserModel = Depends(get_current_us
async def get_current_verified_user(current_user: UserModel = Depends(get_current_user)):
if not current_user.is_verified:
log.debug("User has not confirmed the email.", extra={"user_id": str(current_user.id)})
raise HTTPException(status.HTTP_403_FORBIDDEN, detail="verify email")
log.debug("User has not confirmed the email", extra={"user_id": str(current_user.id)})
raise HTTPException(status.HTTP_403_FORBIDDEN, detail="Verify email")
return current_user
+11 -5
View File
@@ -92,14 +92,16 @@ class ChatService:
)
)
await cls._send_ws_message(members_ids, Message.model_validate(message_db))
await ChatDAO.update(
session,
ChatModel.id==target_chat_id,
obj_in={"last_message": message.content}
)
await session.commit()
# Send WebSocket message AFTER commit to ensure data is persisted
await cls._send_ws_message(members_ids, Message.model_validate(message_db))
log.info("Message sent", extra={"message_id": message_db.id, "sender_id": sender.id, "chat_id": target_chat_id})
return message_db
@@ -202,9 +204,11 @@ class ChatService:
member_ids = [member.user_id for member in members]
await session.commit()
# Send WebSocket message AFTER commit
await cls._send_ws_message(member_ids, Message.model_validate(message_update_db))
await session.commit()
log.info("Message update successfully", extra={"user_id": user.id, "message_id": message_update.id})
return message_update_db
@@ -234,8 +238,10 @@ class ChatService:
member_ids = [member.user_id for member in members]
await MessageDAO.delete(session, MessageModel.id==message_id)
await session.commit()
# Send WebSocket message AFTER commit
await cls._delete_ws_message(member_ids, message_id)
await session.commit()
log.info("Message delete successfully", extra={"user_id": user.id, "message_id": message_exist.id})
+9 -6
View File
@@ -18,7 +18,7 @@ class PubSubMessenger:
@classmethod
async def subscribe_to_channels(cls):
print("test")
log.info("Starting Redis PubSub subscriber")
redis_client = await get_redis()
pubsub = redis_client.pubsub()
@@ -46,11 +46,14 @@ class PubSubMessenger:
@classmethod
async def handle_message(cls, payload, ws: WebSocket):
log.debug("Message start sending type: %s", payload["type"])
if payload["type"] == "send":
await ws.send_json(payload["data"])
elif payload["type"] == "del":
await ws.send_json({"type": "del", "message_id": payload["data"]})
log.info(f"Message sent to user via WebSocket")
try:
if payload["type"] == "send":
await ws.send_json(payload["data"])
elif payload["type"] == "del":
await ws.send_json({"type": "del", "message_id": payload["data"]})
log.info(f"Message sent to user via WebSocket")
except Exception as e:
log.error(f"Error sending WebSocket message: {e}", exc_info=True)