Изменил приём сообщений по вебсокету
This commit is contained in:
parent
18cf9e2250
commit
44aa8e24db
3 changed files with 10 additions and 8 deletions
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Add table
Reference in a new issue