Ich habe einen WAMP-Server auf AWS mit dem folgenden CodePass-Daten zu 'OnJoin' einem WAMP-Server von einem externen Datei
from os import environ
from twisted.internet.defer import inlineCallbacks
from twisted.internet.task import LoopingCall
from autobahn import wamp
from autobahn.twisted.wamp import ApplicationSession, ApplicationRunner, ApplicationSessionFactory
class wampserver(ApplicationSession):
@inlineCallbacks
def onJoin(self, details):
yield self.register(self)
print("Server started")
def heartbeat():
self.publish(u'com.myapp.wampserver.heartbeat', 'heartbeat')
LoopingCall(heartbeat).start(2)
def contcmd():
print 'container'
#Get the value from Tornado server
return self.publish(u'com.myapp.wampserver.contcmd', #pass the data (dict format))
if __name__ == '__main__':
runner = ApplicationRunner(
environ.get("AUTOBAHN_DEMO_ROUTER", u"ws://localhost:8096/ws"),
u"realm1",
)
runner.run(wampserver)
und Twisted-Server mit dem folgenden Code,
import tornado.escape
import tornado.ioloop
import tornado.web
import json
def handleCmd(entries):
#pass this Dict (entries) to WAMP server
for entry in entries:
print entries[entry]
class handleReq(tornado.web.RequestHandler):
def get(self):
self.write('Edge Computing Project')
def post(self, **kwargs):
print "received"
# parse the received data
print self.request.body
data = json.loads(self.request.body)
print data
for entry in data:
if entry == 'command':
print 'command'
handleCmd(data)
self.write(data)
application = tornado.web.Application([
(r"/handle_request", handleReq)
])
if __name__ == "__main__":
application.listen(8090)
tornado.ioloop.IOLoop.instance().start()
Der verdrehte Server empfängt Daten von einer externen Quelle im JSON-Format. Dies wird in 'POST' geparst. Diese Daten müssen weiter an den WAMP-Server übertragen werden (innerhalb onJoin). Sowohl der WAMP- als auch der Tornado-Server laufen auf AWS. Der WAMP-Server veröffentlicht diese Daten dann für die abonnierten Benutzer. Ich kann die Daten nicht an onJoin weitergeben. Gibt es irgendeinen Weg? Oder sollte ich eine Art Bridge verwenden, um auf REST API in WAMP zuzugreifen? Ich möchte hauptsächlich die 'Daten' (im Dict-Format), die über die REST-API empfangen wurden, an alle abonnierten Benutzer über WAMP senden.
Vielen Dank für die Hilfe!