1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
import asyncio
import sys
import logging
import os.path
log = logging.getLogger('frontend')
sys.path = [os.path.join(os.path.dirname(__file__), '../../../..')]+sys.path
from autobahn.asyncio.wamp import ApplicationSession
from runner import ApplicationRunnerRawSocket
from autobahn.wamp import ApplicationError
class MyComponent(ApplicationSession):
async def onJoin(self, details):
# listening for the corresponding message from the "backend"
# (any session that .publish()es to this topic).
def onevent(msg):
log.info("Got event: {}".format(msg))
await self.subscribe(onevent, u'com.myapp.hello')
# call a remote procedure.
count = 0
while True:
try:
res = await self.call(u'com.myapp.add2', count, count+1)
log.info("Got result: {}".format(res))
except ApplicationError:
pass
count += 1
await asyncio.sleep(2)
if __name__ == '__main__':
level = 'info'
if len(sys.argv) > 1 and sys.argv[1] == 'debug':
level = 'debug'
runner = ApplicationRunnerRawSocket(
"tcp://localhost:9090",
u"realm1")
runner.run(MyComponent, logging_level=level)
|