# from gevent import monkey
# monkey.patch_all()
# from cmf.manage import *
# import sys
# from asyncio import sleep
# import logging
# import cmf.config_load as config
# import asyncio
# import aiohttp
# from socketio import Client, ClientNamespace, AsyncClient, AsyncClientNamespace
# logger = logging.getLogger('socketio_proxy')
# log_format = logging.Formatter('[%(levelname)s] - %(message)s')
#
# logger.setLevel(logging.INFO)
#
# # writing to stdout
# handler = logging.StreamHandler(sys.stdout)
# handler.setLevel(logging.INFO)
# handler.setFormatter(log_format)
# logger.addHandler(handler)
# crm_socketio = AsyncClient(logger=True)
# messenger_socketio = AsyncClient(logger=True)
#
# MESSENGER_CONNECTED = False
# CRM_CONNECTED = False
#
#
# class CmfCrmNamespace(AsyncClientNamespace):
#     def on_connect(self):
#         global CRM_CONNECTED
#         CRM_CONNECTED = True
#         logger.info('Подключились к CRM')
#
#     def on_disconnect(self):
#         global CRM_CONNECTED
#         CRM_CONNECTED = False
#         logger.info('Отключились от CRM')
#
#     async def on_message(self, data):
#         logger.info(f'Проксируем событие в Messenger {data}')
#         await messenger_socketio.emit(data['event'], data['data'], namespace='/whatsapp')
#         return None
#
#
# class CmfMessengerNamespace(AsyncClientNamespace):
#     def on_connect(self):
#         global MESSENGER_CONNECTED
#         MESSENGER_CONNECTED = True
#         logger.info('Подключились к Messanger')
#
#     def on_disconnect(self):
#         global MESSENGER_CONNECTED
#         MESSENGER_CONNECTED = False
#         logger.info('Отключились от Messanger')
#
#     async def on_message(self, data):
#         logger.info(f'Проксируем событие в CRM {data}')
#         await crm_socketio.emit(data['event'], data['data'], namespace='/proxy_reply')
#         return None
#
# namespace = '/whatsapp'
# if config.ORG_NAME:
#     namespace = f'{namespace}_{config.ORG_NAME}'
# logger.info('Слушаем: ' + namespace)
# messenger_socketio.register_namespace(CmfMessengerNamespace(namespace))
# crm_socketio.register_namespace(CmfCrmNamespace('/proxy'))
#
#
# async def main():
#     # await crm_socketio.connect(config.WHATSAPP_PROXY_URL, namespaces=['/proxy_reply', '/proxy'])
#     # await messenger_socketio.connect(config.WHATSAPP_MESSENGER_URL, namespaces=['/whatsapp', namespace])
#     while True:
#         try:
#             if not MESSENGER_CONNECTED:
#                 await messenger_socketio.connect(config.WHATSAPP_MESSENGER_URL, namespaces=['/whatsapp', namespace])
#             if not CRM_CONNECTED:
#                 await crm_socketio.connect(config.WHATSAPP_PROXY_URL, namespaces=['/proxy_reply', '/proxy'])
#         except:
#             pass
#         await sleep(1)

if __name__ == "__main__":
    pass
    # loop = asyncio.get_event_loop()
    # loop.run_until_complete(asyncio.wait([main()]))
