-1

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

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

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

1 回答 1

2

XMPP 规范需要 XML,因此没有二进制实现。它确实包含更多的开销,但您必须记住 XMPP 旨在解决的问题 - 一个活跃的聊天连接可能每秒传输一条消息。

至于 Google talk api:他们使用非 xml 协议进行客户端 - Google 服务器连接。当我在 Gmail 客户端发送消息时,请求正文只包含一堆帖子数据:

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 服务器之间使用不同的协议。

于 2013-03-01T19:47:24.040 回答