2013-02-12 148 views
0

我正在使用Autobahn,并且我有一个实现特定的问题。在Autobahn订阅呼叫调度

我试图找出如何在通知送达客户端订阅主题发送给所有连接的客户端(包括新预订的客户端)。这里的代码(为清晰起见编辑):

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

但是,我没有看到新订阅的消息接收此发送。调度呼叫返回无。

这里发生了什么?

回答

2

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