基于二进制的xmpp服务器?

基于二进制的xmpp服务器?,xmpp,Xmpp,Helo,我正在开发一款手机游戏,它需要从客户端到服务器的实时通信 通常我将实现一个TCP套接字服务器,并使用一些私有二进制协议来实现双向通信,现在我还将研究XMPP服务器,比如基于标准的Ejabberd。但XML在某种程度上确实是冗余和低效的,特别是对于移动应用程序,它可能意味着更多的流量和内存消耗 XMPP必须使用XML吗 是否有任何XMPP实现使用二进制作为低级数据格式而不是使用XML?(或者我不应该选择XMPP而从其他标准或技术开始。) 有什么策略可以减少使用XMPP发送复杂数据对象(不

Helo,我正在开发一款手机游戏,它需要从客户端到服务器的实时通信

通常我将实现一个TCP套接字服务器,并使用一些私有二进制协议来实现双向通信,现在我还将研究XMPP服务器,比如基于标准的Ejabberd。但XML在某种程度上确实是冗余和低效的,特别是对于移动应用程序,它可能意味着更多的流量和内存消耗

  • XMPP必须使用XML吗
  • 是否有任何XMPP实现使用二进制作为低级数据格式而不是使用XML?(或者我不应该选择XMPP而从其他标准或技术开始。)
  • 有什么策略可以减少使用XMPP发送复杂数据对象(不是大文件对象)的开销

  • XML是XMPP规范所必需的,因此没有二进制实现。它确实包含了更多的开销,但您必须记住XMPP是为解决这个问题而设计的——一个活动的聊天连接可能每秒传输一条消息

    至于GoogleTalkAPI:他们使用非xml协议进行客户端-谷歌服务器连接。当我在Gmail客户端发送消息时,请求主体只包含一堆post数据:

    count=1&ofs=16&req0_type=m&req0_to=my.friend%40gmail.com&req0_id=6A8466CBC59CBB0C_0&req0_text=test&req0_chatstate=active&req0_iconset=classic&req0__sc=c
    

    这部分不是XMPP。接受此请求的服务器随后执行创建和发送XMPP请求的任务。XMPP仍然是XML格式的,它们只是在客户端和Google服务器之间使用不同的协议。

    不确定您要的是什么。。。任何XMPP都将使用XML,否则就不是XMPP。编辑:显然有一个(笑话)二进制XMPP协议:很抱歉没有清楚,我更新了这个问题。协议设计者似乎不认为使用XML是一个问题。在我看来,即使是JSON也可以比XML节省大量的冗余通信量。基于一些搜索,如果我没弄错的话,GoogleTalkAPI也采用二进制格式。当然,使用二进制协议也有它的优点。但是它也有一些主要的缺点,这些缺点是由XMPP解决的。在大多数用例中,基于XML的协议的开销是可以忽略的。当你真的不需要的时候,不要试图优化它们。在二进制中实现一个功能齐全的聊天协议,比如XMPP,并不是一项简单的任务。这就是为什么开源世界中不存在这样的东西。通过流压缩、“caps”和进一步优化以及XEPs,XMPP甚至在资源受限的环境中也可以非常有效。感谢您提供的见解。我认为这是一个很好的策略,可以在不涉及协议的情况下减少发送复杂数据结构的开销。这对MMO游戏场景很好,我将尝试这种方式。