import json from channels.generic.websocket import AsyncWebsocketConsumer class ExpenseConsumer(AsyncWebsocketConsumer): async def connect(self): # Todos los clientes se conectan a este grupo para escuchar actualizaciones de gastos self.group_name = 'expenses_updates' await self.channel_layer.group_add( self.group_name, self.channel_name ) await self.accept() async def disconnect(self, close_code): await self.channel_layer.group_discard( self.group_name, self.channel_name ) # Recibir actualización desde el Channel Layer async def expense_update(self, event): html_payload = event['html'] # Enviar actualización por WebSocket al cliente (HTMX espera HTML puro, no JSON) await self.send(text_data=html_payload)