2013-02-12 151 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()。我通過構建一個簡單的消息隊列並在協議實例上調用任何排隊消息的調度來解決此問題。