Helo,我正在开发一款需要从客户端到服务器的实时通信的手机游戏。
通常我会实现TCP套接字服务器并使用一些私有二进制协议来启用双向通信,现在我也在研究像Ejabberd这样基于标准的XMPP服务器。但XML在某种程度上确实是冗余和低效的,特别是对于移动应用而言,它可能意味着更多的流量和内存消耗。
答案 0 :(得分: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服务器之间使用不同的协议。