2010-01-17 44 views
2

我正在學習Twisted,尤其是它的XMPP方面。我正在寫一個必須發送和接收消息的Jabber客戶端。這裏是我的代碼:http://pastebin.com/m71225776 據我所知,工作流程是這樣的: 1.我爲重要的網絡事件創建處理程序(即連接,消息接收,斷開等) 2.我運行反應器。此時開始等待任何事件的循環。事件發生時,它傳遞給指定的處理程序。 問題在於發送消息。發送不與任何網絡事件相關聯,因此我無法爲其創建處理程序。在反應堆停止工作之前,我也無法對反應堆做任何事情。但目標是「當我需要時發送消息並在接收到數據時接收數據」。 我覺得我沒有完全理解扭曲的哲學,所以請給我一個正確的方式。與twisted.internet.reactor的互動

回答

2

你只需要找到哪些事件會觸發發送消息。

例如,在GUI客戶端中,發送是在用戶鍵入內容時發生的。你應該整合一個圖形工具包,使用Twisted反應器作爲主迴路(例如有一個Gtk + Twisted反應器)。然後,您將能夠聽取一些界面事件,例如用戶在文本區域輸入enter;您可以通過發送消息對該事件做出反應。

事件的其他來源可能是扭曲的計時器,任何一種協議,包括IPC,webhooks ...

順便說一句,如果你需要使用XMPP扭更高級別的圖書館,看看Wokkel

0

更準確地說,你不能對反應堆做任何事情,直到它調用你的回調函數之一。你不會打電話給你扭曲,扭曲的電話。

實驗的一種方法是讓你知道的一個設置處理程序調用callLater()或loopingCall(),或者在啓動反應堆後放入測試代碼)。