0

我为我的应用程序创建了几个 Web 服务,如下所示。1. 允许主机设备将其信息发送到 Web 服务并将其存储在 sql 数据库中。2.允许客户端设备根据sql数据库中的信息查看附近的所有设备。

我希望客户端现在能够单击要连接的设备之一,然后以某种方式将两者链接在一起。我现在的问题是我的网络服务只能发送对设备请求的响应。我想要的是,如果主机设备可能按下一个按钮,它将将该信息发送到 Web 服务,然后它将一些信息发送给先前连接的客户端。

如何完成从 Web 服务向未请求任何内容的设备发送信息?

背景信息:我正在使用基于 php 的 Web 服务和 ASIHTTPRequest 在 iphone 端发送和接收信息。

4

2 回答 2

1

在 99% 的情况下,您会想要使用轮询。想想任何接收消息的应用程序(电子邮件、Words with Friends 等等)。他们都打电话给服务器并询问“有什么新消息给我吗?” 您必须为您的应用找出正确的频率。

在您需要近乎实时的通信的极少数情况下,您需要将您的应用程序设置为作为服务器运行。请参阅此处:我使用哪些类使 iPhone 充当服务器?. 显然,这样做的电池和带宽成本要高得多。

于 2012-04-18T02:41:38.460 回答
0

您可能会保持一个持久连接打开,但是当网络条件发生变化时(例如从一个网络移动到另一个网络、打开/关闭蜂窝网络等),这将中断。

客户端可以快速轮询服务器,但这不仅会在服务器上产生超出预期的负载,而且更重要的是,会消耗客户端设备的电池。(在 3G 上更是如此,因为无论网络事务有多小,蜂窝无线电都有相当长的最小开机间隔。)

如果您谈论的是相当零星的更新(实时更新确实需要上面的第一个选项,如果 TCP 会话被终止,则需要适当的错误处理和重新连接),您可能会考虑Apple Push Notifications - 只要通知有效负载是一致的与 APNS 指南。他们的行为几乎与您描述的完全一样。

于 2012-04-17T22:38:47.860 回答