xmpp中的实时数据流ejabberd

时间:2015-11-23 11:20:25

标签: xmpp ejabberd

我正在配置一个ejabberd xmpp服务器,用于实时图形数据的远程流传输。实施成功,但现在出现了许多性能问题。

我的要求是通过ejabberd-xmpp每分钟向移动网络发送大约3000条消息,并在桌面应用程序中接收它,而不会有任何相当大的延迟。

我已将ejabberd.yml配置文件中的traffic_shapers更改为非常大的值,并修改了许多其他流量限制,但在低带宽测试时,桌面端会发生大量缓冲。

所以,如果我肯定我的配置是正确的,那么应该使用哪些扩展?在我研究的时候,我发现以下XEP可以提供帮助:

    流压缩(XEP-138)
    Jingle ICE-UDP传输方法(XEP-176)
    同步HTTP上的双向流(BOSH)(XEP-124)
    XMPP Over BOSH(XEP-206)
    流管理(XEP-198)

但是所有的研究只增加了怀疑的数量:

    如果我要实现这些XEP中的任何一个,那么必须对配置进行哪些更改?
    我将如何相应地更改我的XML节?对于新手来说,XEP文件令人惊讶地不足。
    流管理和流压缩有什么区别?
    XMPP Over BOSH和双向流超过同步HTTP有什么区别?
    如何实施BOSH?我现在使用端口号5222,如果我使用端口5280,我的项目的所有更改都会到来吗?我应该在哪里反映这些变化?
    如果我要合并任何两个扩展名,它只会增加速度问题还是会对我有利?

如果有人可以提供帮助,请我确实意识到这个问题不在可以在本网站上公布的问题范围内,而且正如指南所指出的那样,“超出范围”和“非主题”。但任何帮助都将受到极大的赞赏。提前谢谢!

1 个答案:

答案 0 :(得分:0)

问题在于Ejabberd遵循的谈判顺序。 Ejabberd按顺序进行流程协商:

-TLS
- 流程压缩
-SASL
- 资源绑定

而所有其他客户和图书馆都遵循推荐的流媒体谈判顺序XEP-170

-TLS
-SASL
- 流程压缩
- 资源绑定

这导致在SASL加密之后ejabberd服务器完全忽略<compress>请求。由于XEP-170由XMPP文档关键字RECOMMENDED而非REQUIRED标识,因此没有严格的执行 虽然支持的协议here指定遵循XEP-170,但我认为来自this link的问题表明&#34; ejabberd 1.1.2:它只接受SASL之前的压缩(XEP- 0138)&#34;仍然没有修复
(与OpenFire 3.10,XIFF AS3库和Seesmic-XMPP AS3库测试相同的情况,并且由于OpenFire允许在SASL加密之后或之后进行压缩,因此发生了压缩)