- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试使用 XMPPHP 获取我的在线状态而且我似乎无法从 $conn
获得任何具有我的状态的信息。这是我的代码片段:
require_once('XMPPHP/XMPP.php');
$conn = new XMPPHP_XMPP('talk.google.com', 5222, 'xxxx@gmail.com', 'xxxxx', 'xmpphp', 'gmail.com', $printlog = false, $loglevel = XMPPHP_Log::LEVEL_INFO);
$conn->connect();
$conn->processUntil('session_start');
$conn->presence($status='Controller available.');
var_dump($conn); // this gives me a long output but nothing about status. ex: http://pastebin.com/yfs1V5Jb
我还尝试了 getRoster()
来查看我 friend 的信息列表(尽管我只对我的信息感兴趣)但没有成功。
有什么建议可以使它正常工作吗?谢谢。
最佳答案
在过去的 2 天里,我一直在努力解决这个问题,并最终想出了一个 hack 来让事情正常进行。我在这里记录它,因为这是我在寻找答案时最常出现的堆栈溢出问题。
$conn->presence() 方法不仅将您的状态信息发送到服务器;它还从服务器收集每个联系人的状态信息。根本问题是,当您发送 $conn->presence() 命令时,您必须给脚本时间来接收和处理来自服务器的此信息。示例脚本都使用 $conn->processUntil('presence') 来执行此操作,但出于某种原因,我没有暂停足够长的时间来获取所有花名册信息。
为了解决这个问题,我最终只使用了 $conn->processTime(2),强制事情在继续之前等待 2 秒。这对我的目的来说已经足够好了,但显然是一个 hack。因此,以您的代码为例:
require_once('XMPPHP/XMPP.php');
$conn = new XMPPHP_XMPP('talk.google.com', 5222, 'xxxx@gmail.com', 'xxxxx', 'xmpphp', 'gmail.com', $printlog = true, $loglevel = XMPPHP_Log::LEVEL_VERBOSE);
$conn->connect();
$conn->processUntil('session_start');
$conn->presence($status='Controller available.');
$conn->processTime(2);
// now see the results
$roster = $conn->roster->getRoster();
print_r($roster); // you should now see roster array with presence info for each contact
要更具体地回答您的问题,您可以使用以下代码代替“现在查看结果”下的代码:
$my_jid = 'user@domain.tld'; // put your jid here
$status = $conn->roster->getPresence($my_jid);
echo $status['show'];
这将显示您提供的 jid 的在线状态。
请注意,在此示例中,我还更改了构造函数以尽可能显示最详细的日志。这是帮助我解决这个问题的关键。
更好的解决方案显然是向框架添加一个 $conn->processUntil('roster') 命令,或类似的东西。但由于该框架已 5 年未更新,因此不太可能发生。
希望这会节省我试图解决它所浪费的时间。干杯。
关于php - XMPPHP GTalk 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16329449/
(这是我的第一个问题,所以请原谅菜鸟) 我有一个来自 DigitalOcean 的 Ubuntu VPS,我安装并运行了 Openfire。我正在尝试使用 XMPPHP 发送警报,但它不发送消息。 我
我正在尝试使用 XMPPHP 获取我的在线状态而且我似乎无法从 $conn 获得任何具有我的状态的信息。这是我的代码片段: require_once('XMPPHP/XMPP.php'); $conn
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 7 年前。 Improve t
像推送通知(下游消息)一样,我想在 php 中实现从我的 android 设备到我的应用服务器的上游消息传递。 我正在使用 Github 中的这个 XMPPHP 库将我的应用服务器连接到 GCM 的
也许您已经听说过它。它可能是一个月前在 Google IO 上宣布的。 Google Cloud Messaging 只是下游(服务器 --> 电话),但现在有了增强的 CCS(云连接服务器),您可以
我是一名优秀的程序员,十分优秀!