如何在SleekXMPP或Python中处理XMPP订阅
这是我的使用场景:
- 用户在网页上点击一个链接,上面写着:“在XMPP上关注这个人”
- 脚本开始运行,并根据注册的数据获取请求者的用户名和密码。
- 然后发送订阅请求。如果已经发送过订阅请求,脚本就不再发送新的请求。如果订阅被拒绝,脚本应该通知用户。
- 最后,脚本应该退出。
这是我目前的代码,使用了SleekXMPP:
import sys, sleekxmpp, logging
if sys.version_info < (3, 0):
reload(sys)
sys.setdefaultencoding('utf8')
#This is hardcoded here, for illustration.
jid = 'hermans@******.com/Work'
password = '********'
targetjid = 'simena@*******.com/Work'
class SubscribeWorker(sleekxmpp.ClientXMPP):
def __init__(self, jid, password):
sleekxmpp.ClientXMPP.__init__(self, jid, password)
self.add_event_handler("session_start", self.start)
def start(self, event):
self.send_presence(pto=targetjid, ptype='subscribe')
self.get_roster()
if __name__ == '__main__':
logging.basicConfig(level=5,format='%(levelname)-8s %(message)s')
xmpp = SubscribeWorker(jid, password)
if xmpp.connect():
xmpp.process(threaded=False)
print("Done")
else:
print("Unable to connect.")
这段代码能成功发送请求,但没有考虑到是否已经有请求存在或者订阅的状态。有没有人能提供关于XMPP的订阅/取消订阅处理的示例代码?我真的试着理解维基和代码示例了,但目前在这段代码上卡住了。
提前感谢任何帮助。