2

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

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

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

4

4 回答 4

1

@乔:

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

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

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

于 2010-12-21T15:44:14.150 回答
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>
于 2010-11-04T09:58:08.127 回答
1

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

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

于 2010-11-06T07:44:45.483 回答
0

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

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

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

于 2010-10-26T13:26:32.763 回答