2016-10-13 6 views
-1

私は、次のコードパスデータ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を通じてすべての購読ユーザーに送信したいと考えています。

ありがとうございました!

答えて

0

ApplicationSessionFactory()を使用してこの問題を解決できました。これは既存のApplicationSessionを使用し、ApplicationSession関数の外部から呼び出すことができます。

関連する問題