Изменил приём сообщений по вебсокету

This commit is contained in:
urec56 2024-02-22 16:38:45 +03:00
parent 18cf9e2250
commit 44aa8e24db
3 changed files with 10 additions and 8 deletions

View file

@ -48,7 +48,7 @@
function sendMessage(event) {
let input = document.getElementById("messageText")
ws.send(input.value)
ws.send(JSON.stringify({'message':input.value, "image_url": 'https://images.black-phoenix.ru/static/images/avatars/0qQOzJcY5lOuuA1u_avatar.png'}))
input.value = ''
event.preventDefault()
}

View file

@ -27,8 +27,8 @@ class ChatDAO(BaseDAO):
return True
@classmethod
async def send_message(cls, user_id, chat_id: int, message: str):
query = (insert(Messages).values(chat_id=chat_id, user_id=user_id, message=message, image_url=None)
async def send_message(cls, user_id, chat_id: int, message: str, image_url: str | None = None):
query = (insert(Messages).values(chat_id=chat_id, user_id=user_id, message=message, image_url=image_url)
.returning(Messages.id))
async with async_session_maker() as session:
result = await session.execute(query)

View file

@ -24,16 +24,18 @@ class ConnectionManager(WebSocket):
def disconnect(self, chat_id: int, websocket: WebSocket):
self.active_connections[chat_id].remove(websocket)
async def broadcast(self, user_id: int, chat_id: int, message: str):
new_message = await self.add_message_to_database(user_id=user_id, chat_id=chat_id, message=message)
async def broadcast(self, user_id: int, chat_id: int, message: dict):
new_message = await self.add_message_to_database(
user_id=user_id, chat_id=chat_id, message=message['message'], image_url=message['image_url']
)
new_message = dict(new_message)
new_message['created_at'] = new_message['created_at'].strftime("%H:%M, %d %B %Y")
for websocket in self.active_connections[chat_id]:
await websocket.send_json(new_message)
@staticmethod
async def add_message_to_database(user_id: int, chat_id: int, message: str):
result = await ChatDAO.send_message(user_id=user_id, chat_id=chat_id, message=message)
async def add_message_to_database(user_id: int, chat_id: int, message: str, image_url: str):
result = await ChatDAO.send_message(user_id=user_id, chat_id=chat_id, message=message, image_url=image_url)
new_message = await ChatDAO.get_message_by_id(message_id=result)
return new_message
@ -47,7 +49,7 @@ async def websocket_endpoint(chat_id: int, user_id: int, websocket: WebSocket):
await manager.connect(chat_id, websocket)
try:
while True:
data = await websocket.receive_text()
data = await websocket.receive_json()
await manager.broadcast(user_id=user_id, chat_id=chat_id, message=data)
except WebSocketDisconnect: