python p2p code example
Example: p2p py
from p2p_python.utils import setup_p2p_params, setup_logger
from p2p_python.server import Peer2Peer, Peer2PeerCmd
import logging
import asyncio
import aiomonitor
import time
loop = asyncio.get_event_loop()
log = logging.getLogger(__name__)
setup_logger(logging.INFO)
setup_p2p_params(
network_ver=11111,
p2p_port=2000,
p2p_accept=True,
p2p_udp_accept=True,
)
p2p = Peer2Peer(listen=100)
p2p.setup()
def close():
p2p.close()
loop.call_later(1.0, loop.stop)
class DirectCmd(object):
@staticmethod
async def what_is_your_name(user, data):
print("what_is_your_name", user, data)
return {"you return": time.time()}
@staticmethod
async def get_time_now(user, data):
print("get_time_now", user, data)
return {"get time now": time.time()}
p2p.event.setup_events_from_class(DirectCmd)
async def broadcast_check_normal(user, data):
return True
p2p.broadcast_check = broadcast_check_normal
local = locals().copy()
local.update({k: v for k, v in globals().items() if not k.startswith('__')})
log.info('local', list(local.keys()))
aiomonitor.start_monitor(loop, port=3000, locals=local)
log.info(f"you can connect by `nc 127.0.0.1 3000`")
try:
loop.run_forever()
except KeyboardInterrupt:
log.info("closing")
loop.close()