2010-07-26 172 views
1

我已经实现了一个使用Jabber的Web聊天系统,Tigase服务器和基于Ajax的客户端使用JsJac通过BOSH进行通信,Apache mod_proxy将HTTP通信转发给Tigase。这种方式运行得很好,但我注意到性能与桌面Jabber客户端(如Exodus)之间存在一个主要差距,特别是在加入具有长消息历史记录的多用户聊天时。提高BOSH吞吐量

具体来说,从监控HTTP流量看来,服务器每个HTTP请求响应周期只能发送一个XMPP消息。对于正常使用情况来说,这很好(我们可以获得大约80-100毫秒的往返时间,这并不算太坏),但是在加载MUC历史记录时,它可能是一个真正的拖延。

所以我的问题是:Jabber或BOSH是否提供了可能适用于此用例的捆绑或流式消息的任何机制?已经有客户和服务器在那里实施这样的事情了吗?或者我必须自己修改Tigase和JsJac(这当然可能,但并不理想)?

+0

你有没有解决这个问题?听起来像一个很棒的项目... – Kevin 2011-03-18 02:02:12

+0

不完全是,但它是我仍然感兴趣的一个话题。我会在下面查看亚历克的答案,看看会发生什么。 – Dan 2011-03-24 18:54:26

回答

1

实际上,BOSH服务器可以从Jabber服务器收集尽可能多的响应,并将它们作为单一响应发送给客户端。我是一个这样的BOSH库的作者:http://code.google.com/p/node-xmpp-bosh/

在BOSH的情况下,响应主体与请求主体无关。我的意思是,响应可能并且大部分将是对不相关请求的响应(通常是稍后的请求)。

+0

这显然是一个Tigase问题(尽管我不再有Tigase实例可用,所以我无法验证它)。在其他配置中我没有遇到这个问题。 – Dan 2012-06-11 21:00:46

1

我已经在客户端(浏览器)上的服务器和GWT上实现了带有Java的BOSH通信解决方案。 C客户端的实现也已经完成。目前,我正在使解决方案可以在线进行测试。请看看下面的介绍谷歌,看看我的解决方案是您业务相关的:

https://docs.google.com/present/edit?id=0AUPL-u98h45WZGQzNWNjOGhfMGd6bWI1NmNk&hl=en&authkey=CPTzrWc

要查看演讲者备注,请务必点击“查看演讲者备注”按钮,在自下而上页面的右上角。