Example #1
0
async def main(websocket, path):
    async for message in websocket:
        data = json.loads(message.replace('\n', ''))
        answer = dict()
        answer[names.STATUS] = 200
        answer[names.EVENT] = data[names.EVENT]
        USERS[data.get(names.PAYLOAD).get(names.ID_USER)] = websocket
        if data[names.EVENT] == names.GET_HISTORY:
            if data[names.PAYLOAD].get(names.ID_ROOM):
                result = Provider.get_history_room(data[names.PAYLOAD])
            else:
                result = Provider.get_history(data[names.PAYLOAD])
            answer[names.BODY] = result
            await websocket.send(json.dumps(answer))
        if data[names.EVENT] == names.GET_ROOMS:
            if data[names.PAYLOAD].get(names.ID_USER):
                result = Provider.get_rooms_user(data[names.PAYLOAD])
            else:
                result = Provider.get_rooms(data[names.PAYLOAD])
            answer[names.BODY] = result
            await websocket.send(json.dumps(answer))
        elif data[names.EVENT] == names.JOIN:
            result = Provider.join_room(data[names.PAYLOAD])
            answer[names.BODY] = result
            await websocket.send(json.dumps(answer))
        elif data[names.EVENT] == names.LEAVE:
            Provider.leave_room(data[names.PAYLOAD])
            await websocket.send(json.dumps(answer))
        elif data[names.EVENT] == names.SEND_MESSAGE:
            Provider.send_message(data[names.PAYLOAD])
            await notify_users(websocket, data.get(names.PAYLOAD))