Jabber和昂贵的数据(xml其垃圾)

我在一个有jabber的项目中工作有沟通平台。

问题是我需要客户端(很多客户端)在彼此之间进行通信,不仅是为了信号化,而且是为了改变它们之间的数据。

想象一下,客户端A有3个可用的服务。 客户B可以请求A开始向他发送来自每个服务的信息(例如流服务),直到客户B向A表示停止服务。

这些服务只能以100毫秒的间隔发送一个字符或以100毫秒的间隔发送1000个字符,或者在需要时发送一些数据。

当信息发送到B时,到达它必须知道什么服务对应,什么动作和值(示例),所以即时使用json而不是jabber。

我的问题是,即时通讯使用jabber xmpp协议浪费了大量带宽,只是为了发送消息与身体如:

{“s”:“x”,“x”:5} //每100ms(5代表任意数字)

我真的不希望有平行通信(比如直接插座),因为jabber具有所有这些功能,并且具有易于扩展的防火墙问题,有时我使用http通信(在这种情况下使用BOSH)。

我知道有一些压缩,我可以做,但即时通讯想知道,如果你建议其他的东西,不能有我的消息后面的xml这样的数量,仍然使用jabber。

非常感谢你的帮助。

最好的祝福,

爱德华多


听起来,除了重要的数据传输外,XMPP很适合您的应用程序。

正如你可能知道的那样,XMPP从来没有被设计或打算用作数据传输的大管道。 涉及重要数据传输的大多数应用程序(如文件传输和语音/视频)仅使用XMPP协商单独的“带外”流。 你说这可能会导致你的问题,因为防火墙和Web客户端。

如果你的应用程序主要是传输文本,那么你真的应该尝试压缩......它可以显着节省带宽,如果这是你最受限制的资源。 缺点是需要更多的客户端和服务器内存(默认情况下大约为300KB,但可以通过边缘压缩丢失来减少)。

或者,你可以看看使用带内字节流隧道化你的数据base64编码。 我没有你的样本数据,也不知道你是如何包装它们以便运输的,这可能会变得更糟或更好。 我会说如果你剥离了JSON并将它变成更高效的二进制格式,它会更好。 Base64数据不会很好压缩,比原始数据大33%。 这样可以节省JSON和其他无关紧要的包装,同时将数据保留在XMPP流中。

在最终的扩展中,大多数应用程序都很难,无论您使用哪种技术。 它主要需要洞察力 - 如果没有先测试它,你就不应该改变任何东西,你应该事先测试一下,找出你应该改变的东西。 你应该分析你的系统的主要瓶颈(是否真的是客户端的带宽?)。 根据我的经验,XML本身就是直接的瓶颈。 然而,最终所有这些事情对于您的应用程序都是独一无二的,要大规模地提供一般性建议并不容易。


不,Xml不是垃圾。 它的人类可读性很强,可以很好地压缩。

根据我所有的测试,XMPP支持流压缩,而流压缩(主要是zlib)工作得非常好。 因此,如果它对您来说很重要,那么您优化了通过网络发送的字节数,或者使用低带宽,然后在套接字上使用流压缩。 当您在Bosh上时,您必须使用支持HTTP压缩的服务器或使用两者之间的代理来启用压缩。 但请记住,BOSH在所有HTTP头中也有很多开销。

链接地址: http://www.djcxy.com/p/16817.html

上一篇: Jabber and expensive data (xml its trash)

下一篇: How to create a jabber/XMPP proxy/logging service?