2012-08-01 73 views
1

我的服务器是一个REST平台(使用asp.net MVC 4 web api构建),而我的客户端是ios应用程序(当然是objective-c)。 当前对于所有操作,客户端使用http POST,GET,PUT,DELETE查询服务器。 但有一种情况,服务器需要通知客户发生了什么事情。在ios应用程序中监听asp.net mvc-4服务器

Apple的方式是推送通知,当用户为应用程序授权推送通知时,这是确定的,但即使用户关闭推送通知,我也需要通知应用程序(当它位于前台时)。

现在有2种方式,它可以做到:

  1. 客户查询每两秒钟的服务器(在HTTP GET)万一发生什么事(我们到了我们到了?: )
  2. 客户端以某种方式打开服务器的套接字并将其保持打开状态,等待服务器通过打开的会话通知它发生了某些事情。

那么你建议做什么? 1或2?还是有第三种方式? 如果选项2有人可以让我知道如何有效地做到这一点?考虑到我的应用程序应该可以处理100,000个活动用户?

谢谢

回答

0

看一看SignalR。这是微软的实时图书馆,但有人为它写了iOS client library

+0

你能详细说明一下吗?按照您在这里建议的方式进行操作意味着我需要在服务器上安装SignalR微软库,并在客户端上安装iOS客户端库,并使用signalR API在ios客户端和C#服务器之间建立持久连接? – ozba 2012-08-01 20:39:27

+0

另外我看到它主要用于广播到一个组,而我需要发送给特定用户。这对于这项任务也是有效的吗? – ozba 2012-08-01 20:55:48

+0

您需要拥有一台托管SignalR“集线器”的服务器,但其想法是客户端向集线器注册,并打开一个持久连接。发生事件的系统会使用事件详细信息向集线器发送消息。集线器然后实时向客户端设备发送更新。这一切都非常酷,但确实需要某个地方来主办枢纽。 – starskythehutch 2012-08-01 20:56:01