在没有Apple推送通知的情况下将消息从Azure应用程序推送到MonoTouch(iPhone)应用程序

我目前正在设计一个iOS应用程序(使用MonoTouch),它将在Windows Azure上运行服务器组件。该应用程序基本上是一个聊天类型的应用程序,用户将在其客户端内生成消息并将其发送到服务器,然后服务器需要将这些消息转发(尽可能快)到用户可能正在发送消息的其他客户端至。 我的问题是 - 是否有建议的做法来构建这样的应用程序,客户端需要从服务器接收“推送”消息? 我考虑了一些选择,但会很感激反馈。 第一种选择是使用Apple的推送通知服务(APN)。我对此有两个顾虑 - 首先,客户只需要在线时收到消息(APN在应用关闭时发送消息,我不需要或不想要);第二,有可能会有大量的消息,我知道Apple可能会对此感到不满(非常公平)。 我考虑的第二个选项是使用Web服务(基于WCF)并让客户端每隔(比如说)2-3秒调用此服务,这是我们可以容忍的最大延迟。这似乎涉及大量可能不必要的网络流量,(“你有什么东西给我?”,“不”,重复广告恶心)。 第三种选择是在客户端和服务器之间维护持久的Web服务连接。当客户端应用程序启动时,它将在后台线程上调用Web服务方法。服务器将保持连接打开(不返回任何内容),如果有任何消息通过它将立即返回它们。这种连接可能会在2分钟之后超时,此时它将重新建立。这似乎做了我想要的,但同样,我担心在任何时候都会有很多连接打开服务器,这可能会不必要地需要服务器资源。 第四种选择是使用TCP上的持久连接(或UDP,尽管从我发现的,Windows Azure不支持这一点)。这似乎是一个不错的选择,但同样,在服务器使用方面可能过度 - 可能随时连接数百甚至数千个客户端。 第五种选择是以某种方式让服务器将消息直接推送到客户端,可能是通过让客户端运行迷你Web服务器或类似服务器。但是,由于该应用程序将在3G和WiFi网络上运行(超出我的控制范围),我不希望传入的端口会出现这种情况。 如果有人有任何其他建议,或者认为上述选项之一是个好主意(或者是处理这类问题的标准方法),我会非常有兴趣听到它。 提前致谢, 约翰     
已邀请:
你看过Pubnub http://www.pubnub.com/?     

要回复问题请先登录注册