xmpp 添加用户 添加好友请求 删除好友

来源:互联网 发布:网络借贷对大学生危害 编辑:程序博客网 时间:2024/04/30 12:45

http://hi.baidu.com/txjlrk/item/074aeebb1c9f8ee04ec7fd67


1、测试文件 adduser.php

include_once './XMPPHP/XMPP.php';

$conn = new XMPPHP_XMPP($host, 5222, $xmppUserName, $xmppPassword,  'xmpphp', 'svn.zhaoduila.net', false);

try {
    $conn->connect();

    //发送好友请求、发送消息、删除好友   需要以下两行
    $conn->processUntil('session_start');
    $conn->presence();


    //添加用户 
//    $conn->registerNewUser($xmppUserName, $xmppPassword, $email);

    //发送消息 
//    $conn->message('liuruikang1@svn.zhaoduila.net', 'This is a test message!');

    //发送好友请求
//    $conn->addRosterContact($jid, $name);

    //删除好友
    $conn->deleteRosterContact($jid);

    $conn->disconnect();


} catch (XMPPHP_Exception $e) {
    die($e->getMessage());
}

2、我是直接把方法追加到  XMPP.php  文件中的

/**
  * Register a new user.
  *
  * @param $entity
  * Entity we want information about
  */
  public function registerNewUser($username, $password = NULL, $email){
    if (!isset($password))
        $password = $this->genRandomString(15);

    $id = 'reg_' . $this->getID();
    $xml = "<iq type='set' id='$id'>
                <query xmlns='jabber:iq:register'>
                    <username>" . $username . "</username>
                    <password>" . $password . "</password>
                    <email>" . $mail . "</email>
                    <name></name>
                </query>
            </iq>";
    $this->addIdHandler($id, 'register_new_user_handler');
    $this->send($xml);
  }


  /**
  * Handler for new user registration
  *
  * @param XML Object $xml
  */
  public function register_new_user_handler($xml){
          //dpm($xml);
          //var_dump($xml);
          switch ($xml->attrs['type']) {
            case 'error':
              $this->event('new_user_registered', 'error');
              break;
            case 'result':
                // dpm($xml->subs);
                $query = $xml->sub('query');
                $username='';
                $password='';
                if(!is_array($query->subs)) {
                    foreach ($query->sub as $key => $value) {
                        switch ($value->name) {
                            case 'username':
                                $username = $value->data;
                                break;

                            case 'password':
                                $password = $value->data;
                                break;
                        }
                    }
                }
                $this->event('new_user_registered', array('jid' => $username . "@{$this->server}", 'password' => $password));
            default:
                $this->event('new_user_registered', 'default');
        }
  }

  /**
   * Add contact to your roster
   */
  public function addRosterContact($jid, $name, $groups = array()){
      // return if there is no jid specified
      if(!$jid) return;
      // set name to the jid if none is specified
      if (!$name) { $name = $jid; }
      $id = $this->getID();
      $xml = "<iq type='set' id='$id'>";
      $xml .= "<query xmlns='jabber:iq:roster'>";
      $xml .= "<item jid='$jid' name='$name'>";
      foreach ($groups as $group) {
              $xml .= "<group>$group</group>";
      }
      $xml .= "</item>";
      $xml .= "</query>";
      $xml .= "</iq>";
      $xml .= "<presence to='" . $jid . "' type='subscribe'/>";
      $this->addIdHandler($id, 'add_roster_contact_handler');
      $this->send($xml);
  }

  /**
  * @param XML Object $xml
  */
  protected function add_roster_contact_handler($xml) {
    // do anything you wish here
    $this->event('contact_added');
  }

  /**
  *
  * @param $jid
  *       Contact you wish to remove
  */
 
  public function deleteRosterContact($jid) {
    $id = $this->getID();
    $xml = "<iq type='set' id='$id'>";
    $xml .= "<query xmlns='jabber:iq:roster'>";
    $xml .= "<item jid='" . $jid . "' subscription='remove' />";
    $xml .= "</query>";
    $xml .= "</iq>";
    $this->addIdHandler($id, 'delete_roster_contact_handler');
    $this->send($xml);
  }

  /**
  *
  * @param XML Object $xml
  */
  protected function delete_roster_contact_handler($xml) {
    // do any handling you wish here
    $this->event('contact_removed');
  }