【问题标题】:Pass data to 'onJoin' of a WAMP server from external file将数据从外部文件传递到 WAMP 服务器的“onJoin”
【发布时间】:2016-10-13 01:02:38
【问题描述】:

我在 AWS 上有一个带有以下代码的 WAMP 服务器

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)

和一个带有以下代码的 Twisted 服务器,

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()

twisted 服务器将从外部源接收 JSON 格式的数据。这在“POST”中解析。该数据必须进一步传输到 WAMP 服务器(在 onJoin 内)。 WAMP 和 Tornado 服务器都在 AWS 上运行。然后 WAMP 服务器将此数据发布给订阅用户。我无法将数据传递到 onJoin。反正有吗?或者我应该使用某种桥接器来访问 WAMP 中的 REST API?我主要想通过 WAMP 将通过 REST API 接收到的“数据”(以字典格式)发送给所有订阅用户。

感谢您的帮助!

【问题讨论】:

    标签: rest wamp tornado wampserver autobahn


    【解决方案1】:

    我能够通过使用 ApplicationSessionFactory() 解决此问题。这将使用现有的 ApplicationSession,并且可以从 ApplicationSession 函数外部调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多