在 PHP 中从 BOSH 获取 XMPP SID 和 RID?

Posted

技术标签:

【中文标题】在 PHP 中从 BOSH 获取 XMPP SID 和 RID?【英文标题】:Get XMPP SID and RID from BOSH in PHP? 【发布时间】:2010-09-12 19:11:30 【问题描述】:

如何提取用于 XMPP 的 BOSH transport protocol 中的 SID 和 RID 值?具体来说,我使用的是xmpphp

【问题讨论】:

@user43... 我已经编辑了您的问题以包含我认为您的意思(帮助我真的听说过 XMPP)。如果这不是你的意思,请相应地编辑它。顺便说一句,欢迎来到 SO —— 给下一次友好的建议:最好明确你的意思,包括代码更好——这意味着我们可以缩小选择范围并给你一个很好的答案。 @Ninefingers 很好的编辑和介绍! @Pekka - 哈哈。很难从问题中准确说出他/她的问题在哪里(例如尝试了什么),但我认为我会在框中放入“自我解释”以外的其他内容并劝阻选民,因为问题是 有效,如果有点模糊。 【参考方案1】:

我在 XMPPHP 上做了很多工作,尤其是它的 BOSH 部分(直到最近它甚至还没有工作)。 http://github.com/Wordi/xmpphp

就我而言,我使用它来引导 UI 客户端并为 XMPP BOSH 提供自动登录功能。

class Library_BOSH extends XMPPHP_BOSH


    public function getAutoLoginInfo()
    
        return array(
            "jid" => $this->fulljid,
            "rid" => $this->rid,
            "sid" => current( $this->sid )
        );
    

    //we want to block saving the BOSH session into our $_SESSION,
    //since we're just using it to bootstrap the UI client
    public function saveSession();



$bosh = new Library_BOSH(
    $server_address, $server_port,
    $jid, $password,
    NULL, NULL, FALSE, XMPPHP_Log::LEVEL_VERBOSE
);

$bosh->connect( "http://myboshdomain.com/http-bind/", 60 );
$bosh->processUntil('session_start', 5);

$bosh_info = $bosh->getAutoLoginInfo();

【讨论】:

给我错误Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in htdocs/xmpp/xmpphp-master/XMPPHP/BOSH.php:88 Stack trace: #0 htdocs/xmpp/xmpphp-master/XMPPHP/BOSH.php(88): SimpleXMLElement->__construct('\x1F\x8B\x08\x00\x00\x00\x00\x00\x00\x00\x8D\x92aO\xC2...') #1 /Applications/XAMPP/xamppfiles/htdocs/xmpp/xmpphp-master/test.php(30): XMPPHP_BOSH->connect('http://192.168....', 60) #2 main thrown in htdocs/xmpp/xmpphp-master/XMPPHP/BOSH.php on line 88【参考方案2】:

您是否要为连接的 bosh 客户端提取“sid”和“rid”?如果是,通常这些保存在 php 会话或浏览器 cookie 中。我没用过xmpphp,但是你可以尝试转储客户端的会话信息来查看它的内容。

【讨论】:

我想知道如何连接。 好吧,在这种情况下,我只能建议使用 Jaxl 库 (github.com/abhinavsingh/JAXL) 尝试工作 BoshChat 和 BoshMUChat 应用程序,我对 xmpphp 几乎没有经验。

以上是关于在 PHP 中从 BOSH 获取 XMPP SID 和 RID?的主要内容,如果未能解决你的问题,请参考以下文章

XMPP 会话附件

使用 XMPP Strophe BOSH 刷新页面后客户端自动变为不可用

如何使用 XMPP 和 BOSH 实现 Facebook 聊天

gloox 是不是通过 BOSH 支持 BOSH 和 XMPP?

在 windows 上使用 nodejs 安装 node-xmpp-bosh

BOSH XMPP iPhone 库