Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在没有苹果推送通知的情况下,将Azure应用程序中的消息推送至MonoTouch(iPhone)应用程序_Ios_Azure_Xamarin.ios_Push_Persistent Connection - Fatal编程技术网

Ios 在没有苹果推送通知的情况下,将Azure应用程序中的消息推送至MonoTouch(iPhone)应用程序

Ios 在没有苹果推送通知的情况下,将Azure应用程序中的消息推送至MonoTouch(iPhone)应用程序,ios,azure,xamarin.ios,push,persistent-connection,Ios,Azure,Xamarin.ios,Push,Persistent Connection,我目前正在为iOS(使用MonoTouch)设计一个应用程序,该应用程序将在WindowsAzure上运行一个服务器组件。该应用程序本质上是一个聊天类型的应用程序,其中用户将在其客户端内生成消息并将其发送到服务器,然后服务器将需要将这些消息转发(尽可能快)到用户可能要发送消息的其他客户端 我的问题是-对于这样的应用程序架构,客户端需要从服务器接收“推送”消息,是否有推荐的做法 我已经考虑了一些选择,但希望得到反馈 第一种选择是使用苹果的推送通知服务(APNs)。我对此有两个顾虑——首先,客户端

我目前正在为iOS(使用MonoTouch)设计一个应用程序,该应用程序将在WindowsAzure上运行一个服务器组件。该应用程序本质上是一个聊天类型的应用程序,其中用户将在其客户端内生成消息并将其发送到服务器,然后服务器将需要将这些消息转发(尽可能快)到用户可能要发送消息的其他客户端

我的问题是-对于这样的应用程序架构,客户端需要从服务器接收“推送”消息,是否有推荐的做法

我已经考虑了一些选择,但希望得到反馈

  • 第一种选择是使用苹果的推送通知服务(APNs)。我对此有两个顾虑——首先,客户端只需要在联机时接收消息(APNs在应用程序关闭时也会发送消息,我不需要也不想要);第二,可能会有大量的信息,我知道苹果可能会对此感到不高兴(完全公平)

  • 我考虑的第二个选择是使用web服务(基于WCF),让客户端每2-3秒调用一次该服务,这是我们可以容忍的最大延迟。这似乎涉及到大量潜在的不必要的网络流量,不过(“你有什么要给我的吗?”,“没有”,ad nauseum重复道)

  • 第三种选择是在客户端和服务器之间维护持久的web服务连接。当客户端应用程序启动时,它将在后台线程上调用web服务方法。服务器将保持连接打开(不返回任何内容),如果有任何消息通过,它将立即返回。此连接可能会在(例如)2分钟后超时,此时将重新建立连接。这似乎满足了我的需求,但我担心随时都会有大量连接打开到服务器,这可能会不必要地需要服务器资源

  • 第四种选择是使用TCP(或UDP)上的持久连接,尽管据我所知,WindowsAzure不支持这种连接。这似乎是一个很好的选择,但就服务器使用率而言,这可能是过度的——随时都可能连接数百甚至数千个客户端

  • 第五种选择是让服务器直接将消息推送到客户机,可能是让客户机运行小型web服务器或类似服务器。然而,由于该应用程序将在3G和WiFi网络上运行(超出我的控制范围),我不认为传入端口将对此类事情开放

如果有人有任何其他的建议,或者认为上面的选项之一是个好主意(或者是处理这类问题的标准方法),我很有兴趣听听

提前感谢,

约翰

你看过Pubnub吗