在Autobahn订阅中调用dispatch

时间:2013-02-12 18:29:49

标签: autobahn

我正在使用高速公路,我有一个特定于实现的问题。

我正在尝试弄清楚如何在订阅主题的客户端上向所有连接的客户端(包括新订阅的客户端)发送通知。这是代码(为清晰起见而编辑):

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

然而,我没有看到新订阅的消息收到此调度。调度调用返回None。

这里发生了什么?

1 个答案:

答案 0 :(得分:2)

我想出来了。在接收通过dispatch()发送的消息之前,客户端必须首先订阅主题。这意味着如果期望订阅客户端接收消息,则不能在订阅内调用dispatch()。我通过构建一个简单的消息队列并在协议实例上为任何排队的消息调用dispatch来解决这个问题。