# #from django.utils.translation import gettext_lazy as _ #from channels.layers import get_channel_layer #from django.conf import settings #import asyncio #from asgiref.sync import sync_to_async import json, logging from channels.generic.websocket import AsyncWebsocketConsumer from .process import redisDB logger = logging.getLogger(__name__) class ScannerConsumer(AsyncWebsocketConsumer): async def connect(self): self.this_group = f"scanner_proc" await self.channel_layer.group_add(self.this_group, self.channel_name) await self.accept() logger.info(f"==== connected to {self.this_group}") async def disconnect(self, close_code): await self.channel_layer.group_discard(self.this_group, self.channel_name) logger.info( f"==== Disconnect from {self.this_group}") async def scanner_message(self, event): logger.info( f"===={event.get('type')}") await self.send(text_data=json.dumps(event["text"])) ## Receive message from WebSocket async def receive(self, text_data): data = json.loads(text_data) msg_type = data.get("type") if msg_type in ["scanner", "calibrate"]: redisDB.publish(self.this_group, json.dumps(data)) class ReplayConsumer(AsyncWebsocketConsumer): async def connect(self): self.this_group = f"replay_proc" await self.channel_layer.group_add(self.this_group, self.channel_name) await self.accept() logger.info(f"==== connected to {self.this_group}") async def disconnect(self, close_code): await self.channel_layer.group_discard(self.this_group, self.channel_name) logger.info( f"==== Disconnect from {self.this_group}") async def replay_message(self, event): await self.send(text_data=json.dumps(event["text"])) ## Receive message from WebSocket async def receive(self, text_data): data = json.loads(text_data) msg_type = data.get("type") if msg_type == "replay": redisDB.publish(self.this_group, json.dumps(data))