我已经创建了一个由客户投票驱动一个简单的聊天服务器。 客户端发送请求每隔几秒钟的数据,并获得递给他们的同行是否仍连任何新的消息以及信息。
由于客户端在移动平台(iPhone)上运行,我一直在寻找摆脱轮询,迅速消耗电池电量的方法。 我读过它可以保持HTTP连接开放无止境,但不明白如何利用在实践中这种技术。 我也想知道这样的连接是否足够稳定,在移动环境中使用。
理想的情况是,当发生影响他们的活动服务器只将数据发送到客户端(例如对等发布消息或去离线)。
它是明智的尝试做到这一点通过HTTP,或者我会写我自己在TCP协议? 它会很难定制XMPP我需要(我的聊天服务器,我将不得不轻松实现一些特殊的功能)。
如何推技术? 见http://en.wikipedia.org/wiki/Comet_(programming)
我觉得你描述了BOSH XMPP。
http://xmpp.org/extensions/xep-0206.html
我用了一个聊天服务器和非移动设备客户端的JavaScript之间的HTTP绑定方法。 它的工作很适合我。
你可能想看看这个项目它采用了多种技术,包括彗星。 发布细节在这里 ,这里是从该网页摘录
这是我非常高兴能够宣布,我已经在过去两个月一直致力于在我的业余时间一个项目,一个新的基于Web的IRC聊天应用程序的首次公开展示。
该项目汇集了大量的新技术,它必须要开发,使之成为可行的,可扩展性和高效率。
一些基本的工具建立,使这个更多钞票,我认为“不够稳定”已经发布,如PHP的Socket守护库我写要能够应付数百多达几千“彗星”的HTTP连接,以及等量IRC客户端连接。
我刚刚找到这篇文章我自己,它描述了以下技术(这是我在这个问题提到):
......在客户端做一个HTTP请求,让服务器保持队列的请求,直到有推的消息。 如果TCP / IP连接丢失或超时的,客户端将进行新的HTTP请求,并且延迟将仅是往返时间的请求/响应对。 。 。 这种模式有效地需要HTTP,客户端到服务器的两个TCP / IP连接,虽然没有永久的,因此移动友好
我认为这几乎是不可能的和危险的。 政府上网工程无国籍,无连接的含义是客户端和服务器之间的连接是不可靠的总是处理。 这是因为好玩。
通过努力获得一个状态连接您将引入新的问题。 特别是从3G应用。 如果连接断开? 您可以在服务器无法控制,不能推。
我认为它甚至会更容易发送短信/短信和有一个处理的应用程序。