【问题标题】:Configuring punjab to send xmpp requests to Openfire配置 punjab 以向 Openfire 发送 xmpp 请求
【发布时间】:2011-04-30 03:21:47
【问题描述】:

我正在尝试将旁遮普连接管理器与 Openfire 一起使用。我有一个已经在运行的 Openfire 服务器。我还安装了 punjab 并且服务器正常启动,允许我导航到 localhost 上的端口 5280。 (尽管http://localhost:5280/http-bind 给出了“资源未找到消息”。) 我不知道如何从这里开始。我在连接管理器下的 openfire 管理控制台中启用了一个设置,上面写着“连接管理器可以连接到此服务器。”。

如何配置 punjab 连接 xmpp 服务器?

到目前为止,我使用 xmpp stophe lib 和 apache 中的代理模块直接建立与服务器的 bosh 连接。现在我想使用旁遮普语。

【问题讨论】:

    标签: xmpp openfire


    【解决方案1】:

    我昨天有同样的问题,并且能够解决。

    没错——你不需要任何旁遮普语的配置。默认情况下,旁遮普将在端口 5280 上工作。旁遮普自动将节定向到所需的服务器。

    <body rid='123' xmlns='http://jabber.org/protocol/httpbind' to='yourdomain.tld' xml:lang='en' wait='60' hold='1' content='text/xml; charset=utf-8' ver='1.6' xmpp:version='1.0' xmlns:xmpp='urn:xmpp:xbosh'/>
    

    这是用于通过 BOSH 建立连接的节。您可以看到“to”属性。旁遮普邦可以从中判断出要与哪个 XMPP 服务器对话。

    忘记 Openfire 中的连接管理器设置。您可以完全禁用此功能。这是因为 punjab 使用普通的 XMPP 连接到 Openfire - 就像通常的客户端一样 - 它在默认端口 5222 上进行通信。

    所以你要做的就是

    • 告诉旁遮普听哪个网址
    • 代理 BOSH 请求到旁遮普默认端口 5280 上的该 url

    告诉旁遮普要收听的网址

    在 punjab.tac 文件中有一行写着

    root.putChild('bosh', b) # url for BOSH
    

    因此,'bosh' 将成为 strophe 必须将其节发送到的 URL 的一部分,即 http://www.yourdomain.tld/bosh。 “/bosh”也可以是“/http-bind”或“/xmpp-httpbind”,但您的 punjab.tac 文件必须知道这一点。

    代理 BOSH 请求到旁遮普默认端口 5280 上的该 url

    接下来,您的网络服务器必须处理定向到“/bosh”的请求并将它们代理到端口 5280 上的旁遮普语。假设您使用 Apache,那么在您的虚拟主机配置中,类似这样的东西就可以完成这项工作:

    <IfModule proxy_http_module>
        ProxyRequests Off 
        ProxyPass /bosh http://localhost:5280/bosh
        ProxyPassReverse /bosh http://localhost:5280/bosh
    </IfModule>
    

    【讨论】:

      【解决方案2】:

      我做了同样的事情,它也对我有用。感谢您的详细解释。

      补充一点,在我的案例中造成混淆的主要原因是我为不同的项目使用不同的虚拟主机,并且多个项目使用相同的 xmpp 服务器。此外,虽然服务器安装在 localhost 上,但它没有命名为 localhost。因此,如果有人遇到类似问题,那么您需要将 route='xmpp:server:port' (例如 route='xmpp:127.0.0.1:5222' 在我的情况下)添加到所有请求中,否则旁遮普语将无法指导节自动发送到服务器

      【讨论】:

        【解决方案3】:

        @乔:

        我认为您应该编写一个 Strophe.js 插件,将正确的路由属性 (route='xmpp:dev.mydomain.com:5222') 添加到您的 xmpp 请求中...我会尝试指导您做当我下班回来的时候。

        看起来您的应用程序可以与旁遮普语对话,但旁遮普语不知道将您的 xmpp 请求路由到哪里。

        了解为什么您的应用程序在 Connecting 上挂起的一个好方法是阅读以下内容: http://xmpp.org/extensions/xep-0124.html 搜索有关路线的信息 :)

        【讨论】:

        【解决方案4】:

        我使用旁遮普很早以前,但根据我对 bosh 连接管理器如何工作的了解,我认为您的服务器不需要任何特殊设置来允许旁遮普访问它。例如,我使用了一个用 PHP 编写的自定义连接管理器(使用 Jaxl 库),无论目标 jabber 服务器的类型/种类/版本如何,都能够与它们成功通信。

        在您的情况下,您可以简单地开始将您的 strophe 请求(使用 apache 代理模块)代理到 http://localhost:5280/http-bind ,其中 5280 由旁遮普邦处理。经理。从他们开始,它应该能够在服务器上不需要任何特殊配置的情况下到达目标服务器。

        我建议您首先尝试使用旁遮普语连接到您的 gmail 或 facebook 帐户,以确保您已正确配置。

        【讨论】:

        • 感谢您的回复。但我不完全明白旁遮普如何在没有任何配置的情况下进入 openfire 服务器。在 openfire 服务器设置中,http 绑定的端口是 7070,连接管理器的端口是 5262。旁遮普语是如何自己解决这个问题的? (我知道要问一个愚蠢的问题,但这是我完全不理解的)可能是我从根本上错过了一些东西。
        猜你喜欢
        • 2014-04-19
        • 2015-04-01
        • 2013-04-12
        • 2011-07-01
        • 2012-04-07
        • 2019-01-29
        • 2013-05-28
        • 1970-01-01
        相关资源
        最近更新 更多