from channels.generic.websocket import AsyncWebsocketConsumer
import json

'''
class ScannerCollector(WebsocketConsumer):
    def connect(self):
        self.accept()

    def disconnect(self, close_code):
        pass

    def receive(self, text_data):
        text_data_json = json.loads(text_data)
        message = text_data_json['message']

        self.send(text_data=json.dumps({
            'message': message
        }))
'''

class ScannerCollector(AsyncWebsocketConsumer):

    async def connect(self):
        self.group_name = 'scanner'
        # join to group
        await self.channel_layer.group_add(self.group_name, self.channel_name)
        await self.accept()

    async def disconnect(self):
        # leave group
        await self.channel_layer.group_discard(self.group_name, self.channel_name)

    async def receive(self, text_data):
        print('>>>', text_data)
        msg = '{"message":"pong!"}' if text_data == '{"message":"ping"}' else text_data
        print('<<<', msg)
        await self.channel_layer.group_send(
            self.group_name,
            {
                'type': 'distribute',
                'text': msg
            }
        )

    async def distribute(self, event):
        valother = event['text']
        await self.send(text_data=valother)

