2

这是我的用例:

  1. 用户点击网页上的链接说:“在 XMPP 上关注此人”
  2. 脚本启动并获取(基于注册数据)请求者用户名和密码并启动。
  3. 发送订阅请求。如果订阅已发送,则脚本不应发送另一个订阅。如果订阅被拒绝,脚本应该通知用户。
  4. 然后脚本应该退出

到目前为止,这是我的代码,使用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 进行订阅/取消订阅处理的示例代码?而且我试图理解 wiki 和代码示例——我真的有,我现在只是被这段代码困住了。

提前感谢您的任何意见。

4

1 回答 1

0

或者,尝试在网页上添加 xmpp:simena@ * .com?subscribe ,这应该在您现有的桌面客户端中执行正确的操作。

于 2011-06-29T20:20:07.653 回答