2010-01-17 29 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(),或者在启动反应堆后放入测试代码)。