如何以正确的方式初始化扭曲反应器?

2024-09-27 21:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

将客户端添加到reactor的代码如下:

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)

它是这样叫的:

^{pr2}$

当我启动这个应用程序时,我看到了addReactor的“打印”,但之后就什么都没有了。 我通过“tcpdump”看到有东西试图连接到'jabber.org网站但与定义无关:

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)

Tags: selfclientsendfactorydefcallbackjabberoption
2条回答

修正,有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()

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

您可以在Twisted Words examples目录中找到几个这样做的示例:

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

尝试xmpp_client.py和{}。在

相关问题 更多 >

    热门问题