如何使用SleekXMPP或python i general处理XMPP订阅

时间:2011-06-28 12:58:57

标签: python xmpp xmppframework

这是我的用例:

  1. 用户点击网页上的链接说:“在XMPP上关注此人”
  2. 启动脚本并获取(基于注册数据)请求者用户名和密码并启动。
  3. 发送订阅请求。如果已发送订阅,则脚本不应发送另一个订阅。如果订阅被拒绝,脚本应通知用户。
  4. 然后该脚本应退出
  5. 到目前为止,这是我的代码,使用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进行订阅/取消订阅处理时有示例代码? 我试图理解维基和代码示例 - 我真的有,我现在只是停留在这段代码中。

    提前感谢,任何输入。

1 个答案:

答案 0 :(得分:0)

或者,尝试在网页上添加类似xmpp:simena@*.com?subscribe的内容,这应该会在您现有的桌面客户端中做正确的事情。