无法从 xmpphp 获取用户列表(名册)

Posted

技术标签:

【中文标题】无法从 xmpphp 获取用户列表(名册)【英文标题】:Can't get list of users (roster) from xmpphp 【发布时间】:2015-03-12 08:59:12 【问题描述】:

我有一个应用程序,可以在其中向某些设备发送 xmpp 消息。这成功地工作。但是现在我想收到名册(已连接用户的列表)并且我得到空数组,但是那里有 4 个用户。这是我的代码

   require_once($_SERVER["DOCUMENT_ROOT"]."/lib/xmpphp/XMPP.php");
    $con=$conf->getXMPPObj();
    try 
            $con->useEncryption(false);
            $con->connect();
            $con->processUntil('session_start');
            $con->presence();
            $roster=$con->roster->getRoster();
            var_dump($roster);
            //$con->processUntil('roster_received');
            if (strpos($_POST['msg'],'CamMode')!==false)
            
                $con->message("user@host" ,$_POST['msg']);
            
            else
            
                $con->message("user@host",$_POST['msg']);
                 
            $con->disconnect();
         
        catch(XMPPHP_Exception $e) 
        
            die($e->getMessage());
        

消息已成功发送,但$roster 的转储为空。怎么了?

【问题讨论】:

【参考方案1】:

我添加了这个:$con->processUntil(array('session_start', 'roster_received'));$con->processTime(5); 它对我有用。

        ...
        $con->connect();
        $payloads = $con->processUntil(array('session_start', 'roster_received'));
        $con->presence();
        $con->processTime(5);
        $roster = $con->roster->getRoster();
        ...

【讨论】:

以上是关于无法从 xmpphp 获取用户列表(名册)的主要内容,如果未能解决你的问题,请参考以下文章

获取名册条目的所有资源列表

在登录时检索一个人的名册联系人列表

Ejabberd 的名册管理

openfire用户和名册用户之间的区别

在 ejabberd 中添加共享名册中的所有用户

XMPPFramework - 如何接收名册的存在信息以及名册列表?