3

単純な Hello World の例に基づいて、トピックを公開時のoncounterトピックに置き換えます。これは、がそれ自体がパブリッシュしているトピックをサブスクライブしているonhelloことを意味します。AppSession独自のメッセージを受信できるはずだと思いますが、そうではないようです。これを行う方法はありますか?

再現可能な例:


from twisted.internet.defer import inlineCallbacks

from autobahn.twisted.util import sleep from autobahn.twisted.wamp import ApplicationSession

class AppSession(ApplicationSession):

@inlineCallbacks
def onJoin(self, details):

    def onhello(msg):
        print("event for 'onhello' received: {}".format(msg))
    sub = yield self.subscribe(onhello, 'com.example.onhello')

    counter = 0
    while True:

        yield self.publish('com.example.onhello', counter)
        print("published to 'onhello' with counter {}".format(counter))
        counter += 1

        yield sleep(1)

を実行した後crossbar startonhelloトピックが発行されていることを確認しましたが、受信されません。

4

1 に答える 1

3

その理由は、パブリッシャー自体がパブリッシュ先のトピックをサブスクライブしている場合でも、デフォルトでは、パブリッシャーはイベントをパブリッシュされないためです。

optionsに引数を指定することで、その動作を変更できますpublish()

yield self.publish('com.example.onhello', counter,
   options = autobahn.wamp.types.PublishOptions(excludeMe = False))
于 2014-11-17T11:03:31.093 に答える