配置punjab将xmpp请求发送到Openfire

时间:2010-10-25 10:14:05

标签: xmpp openfire

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

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

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

4 个答案:

答案 0 :(得分:1)

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

这是对的 - 你不需要任何旁遮普的配置。默认情况下,punjab将在端口5280上工作.Punjab会自动将节点指向所需的服务器。

<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中的连接管理器设置。您可以完全禁用此功能。这是因为旁遮普使用与Openfire的正常XMPP连接 - 就像通常的客户端一样 - 它在默认端口5222上进行通信。

所以你要做的就是

  • 告诉旁遮普听什么网址
  • 代理BOSH在punjab默认端口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上向该网址发出请求

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

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

答案 1 :(得分:1)

我做了同样的事情,它也在我的最后工作。谢谢你的详细解释。

要添加它,在我的情况下混淆的主要原因是我为不同的项目使用不同的虚拟主机,并且多个项目使用相同的xmpp服务器。更重要的是,虽然服务器安装在localhost上,但它的名字并不是localhost。因此,如果有人遇到类似问题,那么你需要在所有请求中添加route ='xmpp:server:port'(例如,路由='xmpp:127.0.0.1:5222'),否则旁遮普将无法指示节自动到服务器

答案 2 :(得分:1)

@Joe:

我认为你应该写一个Strophe.js插件,它会为你的xmpp请求添加正确的路由属性(route ='xmpp:dev.mydomain.com:5222')...我会尽力引导你做当我下班回来时。

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

理解你的应用程序挂起连接的一个好方法是读取这个: http://xmpp.org/extensions/xep-0124.html搜索有关路线的位:)

答案 3 :(得分:0)

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

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

我建议您首先尝试使用Punjab连接到您的Gmail或Facebook帐户,以确保正确配置。