3

我有一个 MyJabber 类,它初始化一个基本的 jabber 帐户,将传入的消息打印到标准输出 + 将它们放入队列中。

将客户端添加到反应器的代码是这样的:

def addReactor(self):
    print 'inside  AddReactor'
    factory = client.basicClientFactory(self.jid, self.option['jabber']['password'])
    print "factory initialized"
    factory.addBootstrap(xmlstream.STREAM_AUTHD_EVENT, self.authd)
    print 'factory bootsraped'
    reactor.connectTCP(self.option['jabber']['server'], 5222, factory)

它是这样调用的:

jabber = MyJabber(options, to_irc)
jabber.addReactor()
reactor.run()

当我启动应用程序时,我看到了 addReactor 的“打印”,但之后就什么也没有了。我通过“tcpdump”看到有东西试图连接到“jabber.org”,但与 authd def 没有任何关系:

def authd(self, xmlstream):
    global thexmlstream
    thexmlstream = xmlstream
    # need to send presence so clients know we're
    # actually online.
    print 'Initializing...'
    presence = domish.Element(('jabber:client', 'presence'))
    presence.addElement('status').addContent('Online')

    xmlstream.send(presence)
    # add a callback for the messages
    print 'Add gotMessaged callback'
    xmlstream.addObserver('/message', gotMessage)
    print 'Add * callback'
    xmlstream.addObserver('/*', gotSomething)
4

2 回答 2

4

这似乎并不是关于如何“初始化扭曲反应堆”的问题。相反,它似乎更多地是关于如何使用 Twisted Words 的 XMPP 支持来发送和响应 XMPP 消息。

您可以在 Twisted Words 示例目录中找到几个执行此操作的示例:

http://twistedmatrix.com/documents/current/words/examples/

尝试xmpp_client.pyjabber_client.py

于 2010-02-15T13:02:13.373 回答
0

修正,有2个错误。

1) 我不小心忘记了 JID 是 name@domain.tld/extra

2) 忘记self.添加gotMessage/gotSomething

我还让 addReactor 返回工厂,并在 main() 中写道:

jabber = MyJabber(options, to_irc)
factory = jabber.addReactor()
reactor.connectTCP(options['jabber']['server'], 5222, factory)
reactor.run()
于 2010-02-15T22:03:19.580 回答