def __init__(self, group=None, target=None, name=None, args=(), kwargs=None, daemon=None) -> None: super().__init__(group=group, target=target, name=name, args=args, kwargs=kwargs, daemon=daemon) self.args = args self.kwargs = kwargs def joined(session, details): print("session ready") self.mySession = session comp = Component(transports="ws://host.docker.internal:8090/ws", realm=u"racelog.state") comp.on_join(joined) comp.start(loop=self)
class Publisher: def __init__(self): self.component = None async def connect(self, crossbar_url): """Method used to initialize a session for the publisher :param crossbar_url: url hosting the crossbar instance """ log.debug(f"Connecting to {crossbar_url}") self.component = Component(transports=crossbar_url, realm='realm1') loop = asyncio.get_event_loop() txaio.config.loop = loop session_ready = asyncio.Event() async def setup_session(created_session, _details): """Callback method used to retrieve a session and notify interested parties with an event""" self.session = created_session nonlocal session_ready session_ready.set() self.component.start(loop=loop) self.component.on_join(setup_session) await session_ready.wait() def publish(self, topic, payload): """Publish the payload on the specified topic :param topic: target topic :param payload: payload to be published """ self.session.publish(topic, payload) log.debug(f"data is published to : {topic}")