我已经创建了由客户机轮询驱动的简单的聊天服务器。客户端发送请求每隔几秒钟的数据,并获得递给他们的同行是否仍连任何新的消息以及信息。

由于客户端在移动平台(iPhone)上运行,我一直在寻找摆脱轮询,迅速消耗电池电量的方法。我读过它可以保持HTTP连接开放无止境,但不明白如何利用在实践中这种技术。我也想知道这种连接是否足够稳定在移动环境中使用。

在理想的情况是,当已经发生的影响他们的事件(例如对等体发布的消息或要离线)服务器只将数据发送到客户端。

是不是最好尝试通过HTTP做到这一点,或者我会写我自己在TCP协议?它有多难将是定制XMPP我需要(我的聊天服务器,我将不得不轻松实现一些特殊的功能)。

有帮助吗?

解决方案

其他提示

我觉得你描述了BOSH XMPP。

http://xmpp.org/extensions/xep-0206.html

我使用聊天服务器和非移动设备的javascript客户端之间此http结合方法。它的工作很适合我。

您可能想看看这个项目它采用了多种技术,包括彗星。 发布细节在这里,这里是从页

  

这是我非常高兴能够   公布首次公开展示   一个项目,我一直在努力   我在上个月的业余时间或   二,新的基于Web的IRC聊天   应用

     

该项目汇集了很多   新技术,必须是   发展到使这个可行的,   可扩展和高效的。

     

一些的基本工具建立于   使这更多钞票,我认为   “不够稳定”已经发布,   如 PHP插槽守护进程库   我写信给能够处理   数百多达数千个   “彗星” HTTP连接,和相等   量IRC客户端连接。

我刚发现本文自己,它描述了以下技术(我在问题简称):

  

...有客户端做出的HTTP请求   并让服务器保持请求   队列上,直到有一个消息   推。如果TCP / IP连接   丢失或超时的,客户端会   做一个新的HTTP请求,并且延迟   只会是往返时间为   请求/响应对。 。 。这个模型   有效地需要两个TCP / IP   为HTTP,客户机连接   服务器,虽然没有永久性的,   因此移动友好

我认为这几乎是不可能的和危险的。政府上网工程无国籍,无连接的含义是客户端和服务器之间的连接是不可靠的总是处理。这是因为好玩。

这是试图让您将引入新的问题,有状态的连接。特别是从3G应用。如果连接断开?您可以在服务器无法控制,不能推。

我觉得它甚至会更容易发送短信/短信和有一个处理的应用程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top