t.w.p.jabber Example
from twisted.words.protocols.jabber import client, jid
from twisted.words.xish import domish
from twisted.internet import reactor
class JabberClient:
xmlstream = None
def __init__(self, myJid):
self.myJid = myJid
def authd(self,xmlstream):
print "authenticated"
self.xmlstream = xmlstream
presence = domish.Element(('jabber:client','presence'))
xmlstream.send(presence)
xmlstream.addObserver('/message', self.debug)
xmlstream.addObserver('/presence', self.debug)
xmlstream.addObserver('/iq', self.debug)
reactor.callLater(5, self.sendMessage, 'test@server.jabber','test','test')
def sendMessage(self, to, subject, body):
message = domish.Element(('jabber:client','message'))
message['to'] = to
message['type'] = 'chat'
# message.addElement('subject',None,subject)
message.addElement('body',None,body)
self.xmlstream.send(message)
def debug(self, elem):
print elem.toXml().encode('utf-8')
print "="*20
myJid = jid.JID('username@server.jabber/twisted_words')
factory = client.basicClientFactory(myJid, 'password')
jabber = JabberClient(myJid)
factory.addBootstrap('//event/stream/authd',jabber.authd)
factory.addBootstrap("//event/client/basicauth/invaliduser", jabber.debug)
factory.addBootstrap("//event/client/basicauth/authfailed", jabber.debug)
factory.addBootstrap("//event/stream/error", jabber.debug)
reactor.connectTCP('server.jabber',5222,factory)
reactor.run()