私は、次のコードパスデータWAMPサーバの「onJoin」への外部ファイルから
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)
と次のコードでツイストサーバー、
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()
をAWS上のWAMPサーバーを持っていますねじれたサーバーはJSON形式で外部ソースからデータを受け取ります。これは 'POST'で解析されます。このデータは、WAMPサーバー(onJoin内)にさらに転送する必要があります。 WAMPとTornadoの両方のサーバがAWS上で動作しています。 WAMPサーバーは、このデータをサブスクライブしたユーザーに公開します。私はonJoinにデータを渡すことができません。とにかくありますか?または、WAMPのREST APIにアクセスするために何らかのブリッジを使用する必要がありますか?私は主に、REST APIを介して受け取った「データ」(dict形式)を、WAMPを通じてすべての購読ユーザーに送信したいと考えています。
ありがとうございました!