2009-12-24 29 views
1

好的,這不是問題。我看到的所有wokkel和twisted的例子都沒有正確觀察JID中生成的資源。爲什麼所有twisted/wokkel xmpp示例都會忽略xmpp協議中正確使用JID?

<message to="[email protected]" from="[email protected]/Example2C2F32A1" type="error"><body>echo: None</body><error code="400" type="modify"><bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">If set, the 'from' attribute must be set to the user's full JID.</text></error></message>

完整,服務器:

谷歌談客戶使用wokkel /一般扭曲折斷,因爲他們不設置全JID上的反應,從而導致(非常隱蔽的,低水平的)錯誤,如建發出的jid可以在self.parent.authenticator.jid.full()

協議處理程序中獲得。因此,在發送消息時,確保在你的字段中使用完整的jid,或者某些服務器不會喜歡你,你會把你的頭髮拉出來,然後哭泣。

+3

你可以勇敢地用一個問題開始(我怎樣才能使使用GTALK當這個例子wokkel代碼不BARF,看到這個奇怪的錯誤)保存這個問題,你的代碼與一起發送/接收xmpp數據包。然後用你已經在self.parent.authenticator.jid.full()中找到的東西回答你的問題。那麼你有一個可參考的問題/答案,而不是一個咆哮。 – 2009-12-29 18:33:37

回答

5

在這種特殊情況下,對非問題的更好回答是您不應該設置發件人地址。每個服務器都會高興地爲你填充空白,從而避免瞭解你的客戶擁有什麼JID。

0

根據我的實驗,它不是self.parent.authenticator.jid.full()而是self.parent.jid.full()。代碼片段如下

 reply = toResponse(msg, msg.getAttribute('type')) 
     reply.addElement('body', content=unicode(msg.body)) 
     reply["from"] = self.parent.jid.full() 
     self.send(reply)