xmpp的python客户端,,看了很多,不是很早不


看了很多,不是很早不更新了,就是不支持gevent

最终选用了sleekxmpp

#!/usr/bin/envpython#-*-coding:utf-8-*-#https://github.com/fritzy/SleekXMPP/tree/develop/examplesimportsysif"threading"insys.modules:print("threadingmoduleloadedbeforepatching!","xmppclient")delsys.modules["threading"]fromgeventimportmonkey;monkey.patch_all()fromgevent.queueimportQueuefromsleekxmpp.util.misc_opsimportsetdefaultencoding;setdefaultencoding("utf8")importsleekxmppimportloggingimportgeventclassXMPPClient(sleekxmpp.ClientXMPP):def__init__(self,jid,password,address):super(XMPPClient,self).__init__(jid,password)self.register_plugin("xep_0030")#ServiceDiscoveryself.register_plugin("xep_0004")#DataFormsself.register_plugin("xep_0060")#PubSubself.register_plugin("xep_0199")#XMPPPingself.inbox=Queue()self.address=addressself.job_send=None#添加事件触发-启动触发self.add_event_handler("session_start",self.session_start,threaded=True)#添加事件触发-收消息触发self.add_event_handler("message",self.message)ifself.connect(address):self.process(block=False)print"xmppconnected"self.init()else:print"unabletoconnect."defsession_start(self,event):"""Arguments:event--Anemptydictionary.Thesession_starteventdoesnotprovideanyadditionaldata."""self.send_presence()self.get_roster()#self.send_message(mto=self.target_jid,#mbody="ooxx",#mtype="chat")defmessage(self,msg):printmsg["type"],msg["body"],msg["from"],msg["lang"]#ifmsg["type"]in("chat","normal"):#msg.reply("Thanksforsending\n%(body)s"%msg).send()defput_data(self,data):"""发送消息函数@paramdata:(target_jid,mtype,msg)"""self.inbox.put(data)defsend_data(self):whileTrue:data=self.inbox.get()target_jid,mtype,msg=dataself.send_message(mto=target_jid,mbody=msg,mtype=mtype)definit(self):self.job_send=job_send=gevent.spawn(self.send_data)def_exit(glet):job_send.unlink(_exit)self.disconnect(wait=False)job_send.link(_exit)if__name__=="__main__":logging.basicConfig(level=logging.ERROR,format="%(levelname)-8s%(message)s")xmpp=XMPPClient("[email protected]","123456",("the-xmpp-server-ip",5222))xmpp.put_data(("[email protected]","chat","ooxx"))xmpp=XMPPClient("[email protected]","123456",("the-xmpp-server-ip",5222))xmpp.put_data(("[email protected]","chat","xxoo"))gevent.wait()


xmpp的python客户端

评论关闭