2

これが私のユースケースです:

  1. ユーザーが Web ページのリンクをクリックすると、「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のようなものを Web ページに配置してみてください。これは、既存のデスクトップ クライアントで正しいことを行うはずです。

于 2011-06-29T20:20:07.653 に答える