Sleekxmpp订阅和事件处理不适用于同一用户会话

2024-05-23 13:57:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用sleekxmpp实现pub-sub。下面是从SleekXMPP下的示例重构发布和订阅的代码。我要做的是从user1/resourceB的会话订阅user1/resourceA(节点的创建者)的节点n1。问题是

  • 当我从user1/resourceA发布消息时,虽然订阅成功,但我没有获取user1/resourcebevent中节点n1的事件。在
  • 当我从user1/resourceB发布到节点n1时,我会从同一个会话获取事件发布,但不会发布到另一个会话。ie从节点创建者user1/resourceA订阅node n1。在这种情况下,我得到了事件。在

    def create(self,node_name,config=None):
      try :        
          self['xep_0060'].create_node(self.pubsubserver,node_name,config=config)
     except:
          logging.error('Could not create node: %s' % node_name)
    
    def publish(self,node_name,payload,_id=None):
          print 'entering pubsub publish'
          payload_xml = ET.fromstring("<test xmlns='test'>%s</test>" % payload)
          ET.dump(payload_xml)
          try:
             result = self['xep_0060'].publish(self.pubsubserver, node_name,payload=payload_xml)
    
        except:
             logging.error('Could not publish to: %s' % node_name)
    def subscribe(self,node_name,cb,options=None):
       try:
           self['xep_0060'].map_node_event(node_name,node_name)
           self.add_event_handler('n1_publish',cb)
           result = self['xep_0060'].subscribe(jid=self.pubsubserver, node=node_name)
           print('Subscribed to node %s' % (node_name))
       except:
           logging.error('Could not subscribe')
    

日志:

^{pr2}$

我正在为Xmpp使用Openfire服务器


Tags: nameselfnoneconfignode节点defcreate