我的手机(客户端)上运行了一个 J2ME 应用程序,
我想打开与服务器的 HTTP 连接并不断轮询服务器上的更新信息。
执行的每个轮询都会用完 GPRS 字节,从长远来看会变得昂贵,因为 GPRS 计费是基于发送和接收的数据包。是否有使用 HTTP 协议进行轮询的字节有效方式?
我也听说过长轮询,但我不确定它是如何工作的以及它的效率如何。
实际上,首选方法是服务器告诉手机应用程序新数据已准备好使用,这样就不需要进行轮询,但是我不知道这些技术,尤其是在 J2ME 中。
如果您只想使用 HTTP 来解决这个问题,那么长轮询将是最好的方法。这很容易。首先,您需要在服务器端设置一个用于通知的 URL(例如http://example.com/notify
),并定义一个通知协议。协议可以像一些文本行一样简单,每一行都是一个事件。例如,
MSG user1
PHOTO user2 album1
EMAIL user1
HEARTBEAT 300
手机上的轮询线程是这样工作的,
您必须注意以下实施细节,
有人告诉我还有其他更有效的方法可以将通知推送到手机,比如使用 SMS 和一些 IP 级别的技巧。但是你要么必须做一些低级的非便携式编程,要么面临专利侵权的风险。长轮询可能是使用仅 HTTP 的解决方案可以获得的最好的。
HEAD HTTP 请求是 HTTP 提供的用于检查页面是否已更改的方法,浏览器和代理服务器使用它来检查页面是否已更新,而不会占用太多带宽。
在 HTTP 术语中,HEAD 请求与没有正文的 GET 相同,我假设这最多只有几百个字节,如果您的轮询不是很频繁,这看起来是可以接受的。
最好的方法是使用套接字连接。许多应用程序(如 GMail)都使用它们。