xmpp 添加用户 添加好友请求 删除好友
2012-08-14 11:33
211 查看
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');
}
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');
}
相关文章推荐
- iOS XMPP实现单例用户登录,用户注册,添加好友,删除好友....
- XMPP之添加好友请求报文
- XMPP添加删除好友
- xmpp开发教程(六)-添加和删除好友
- XMPPFrameWork IOS 开发(五)获取好友信息和添加删除好友
- XMPP学习记录五:添加好友和删除好友
- XMPPFrameWork IOS 开发(五)获取好友信息和添加删除好友
- XMPPFrameWork IOS 开发(五)获取好友信息和添加删除好友
- xmpp获取好友信息和添加删除好友(4)
- [置顶] XMPPFrameWork IOS 开发(五)获取好友信息和添加删除好友
- XMPP-好友列表模块的注册和好友列表获取,添加,删除
- xmpp-iOS-添加好友和删除好友
- ios,xmpp 添加好友与好友请求处理
- 基于Smack3.0.4+ Openfire3.10.2下学习开发IM(四)用户分组操作:添加和删除分组、好友添加指定分组和不指定分组(Roster、RosterGroup和RosterEntry)
- IOS使用XMPP最新教程(五)添加好友和接受好友请求
- Linux添加/删除用户和用户组
- 添加二次联动批量删除查询请求网络
- MySQL添加用户、删除用户与授权与关联实例
- linux添加/删除用户和组
- Android xmpp开发 asmack获取离线在线添加好友消息 及 好友上线下线通知