From 4c57a356b12fe50ea8bbe549285ed6c8a419af36 Mon Sep 17 00:00:00 2001 From: Welton Moura Date: Sun, 27 Apr 2025 14:36:18 -0300 Subject: [PATCH] bug: envio msg para servidor wesocket --- gestaoRaul/comandas/htmx_views.py | 39 ++++++++++++------- .../websocket_client/websocketClient.py | 30 ++++++++++++++ 2 files changed, 55 insertions(+), 14 deletions(-) create mode 100644 gestaoRaul/websocket_client/websocketClient.py diff --git a/gestaoRaul/comandas/htmx_views.py b/gestaoRaul/comandas/htmx_views.py index 61167d4..eb6016f 100644 --- a/gestaoRaul/comandas/htmx_views.py +++ b/gestaoRaul/comandas/htmx_views.py @@ -9,21 +9,24 @@ from products.models import Product from payments.models import Payments from typePay.models import TypePay from gestaoRaul.decorators import group_required +from websocket_client.websocketClient import enviar_mensagem -import asyncio -import websockets +from asgiref.sync import async_to_sync +# import asyncio -async def enviar_mensagem(msg): - try: - uri = "ws://websocket_server:8765" - async with websockets.connect(uri) as websocket: - await websocket.send(msg) - # print(f"> Enviado: {msg}") +# import websockets - # resposta = await websocket.recv() - # print(f"< Recebido: {resposta}") - except Exception as e: - print(f"Erro ao enviar mensagem via websocket: {e}") +# async def enviar_mensagem(msg): +# try: +# uri = "ws://websocket_server:8765" +# async with websockets.connect(uri) as websocket: +# await websocket.send(msg) +# # print(f"> Enviado: {msg}") + +# # resposta = await websocket.recv() +# # print(f"< Recebido: {resposta}") +# except Exception as e: +# print(f"Erro ao enviar mensagem via websocket: {e}") def somar(consumo:ProductComanda, comanda:Comanda): @@ -84,8 +87,16 @@ def addProduct(request, product_id, comanda_id): 'id':order.id, 'speak': f'Novo pedido! {product.name}, para {comanda.name}.' }) - - asyncio.run(enviar_mensagem(msg)) + try: + # Chama a função async dentro da view normal + async_to_sync(enviar_mensagem)(mensagem) + + # return JsonResponse({"status": "Mensagem enviada com sucesso"}) + + except Exception as e: + print("Erro add product websocket: ",e) + # return JsonResponse({"status": "Erro", "erro": str(e)}, status=500) + # asyncio.run(enviar_mensagem(msg)) consumo = ProductComanda.objects.filter(comanda=comanda_id) valores = somar(consumo,comanda) diff --git a/gestaoRaul/websocket_client/websocketClient.py b/gestaoRaul/websocket_client/websocketClient.py new file mode 100644 index 0000000..d50158a --- /dev/null +++ b/gestaoRaul/websocket_client/websocketClient.py @@ -0,0 +1,30 @@ +import websockets +import asyncio +import json + +async def enviar_mensagem(msg): + uri = "ws://websocket_server:8765" + + try: + async with websockets.connect(uri) as websocket: + # Garante que msg seja JSON + if isinstance(msg, dict): + mensagem_json = json.dumps(msg) + else: + mensagem_json = str(msg) + + await websocket.send(mensagem_json) + print(f"> Enviado: {mensagem_json}") + + # Se quiser esperar uma resposta (opcional) + # resposta = await websocket.recv() + # print(f"< Recebido: {resposta}") + + except websockets.exceptions.InvalidURI as e: + print(f"URI inválida: {e}") + except websockets.exceptions.InvalidHandshake as e: + print(f"Handshake WebSocket falhou: {e}") + except ConnectionRefusedError: + print("Conexão recusada. Verifique se o servidor WebSocket está rodando.") + except Exception as e: + print(f"Erro ao enviar mensagem via websocket: {e}")