0

私は Autobahn を使用しており、実装固有の質問があります。

クライアントがトピックをサブスクライブしたときに、接続されているすべてのクライアント (新しくサブスクライブしたクライアントを含む) に通知を送信する方法を見つけようとしています。コードは次のとおりです(わかりやすくするために編集しています):

@exportSub("", True)
def subscribe(self, topicUriPrefix, topicUriSuffix):
topic_uri = "%s%s" % (topicUriPrefix, topicUriSuffix) 
    self.client.dispatch(topic_uri, {"msg":"WTF"})
return True

しかし、新しくサブスクライブしたメッセージがこのディスパッチを受信して​​いません。ディスパッチ呼び出しは None を返しています。

ここで何が起こっているのですか?

4

1 に答える 1

2

私はこれを理解しました。dispatch() 経由で送信されたメッセージを受信する前に、クライアントはまずトピックにサブスクライブする必要があります。これは、サブスクライブしているクライアントがメッセージを受信すると予想される場合、サブスクライブ内でdispatch()を呼び出すことができないことを意味します。単純なメッセージ キューを作成し、キューに入れられたメッセージのプロトコル インスタンスでディスパッチを呼び出すことで、この問題を回避しました。

于 2013-02-12T21:15:30.033 に答える