服务器到Phonegap推送:SignalR与Azure通知中心

时间:2014-09-15 03:53:32

标签: cordova asp.net-web-api push-notification signalr real-time

嗯,我继续使用我的Phonegap应用程序开发处于一种两难境地:对于实时事件通知,我应该使用Azure Notification Hub还是SignalR?

根据我的理解,SignalR通过使用Web套接字适用于实时Web应用程序。而通知中心可以轻松地跨多个平台发送推送通知。 为了便于回复,让我解释一下我目前拥有的结构以及我的应用程序应该做什么。

该应用程序: 它基本上是一个用户可以创建组并邀请其他用户的应用程序。用户还可以组成一个小组" online"所以其他用户可以进入"群组。当该群组在线且用户已进入时,他们可以发送问题,交换消息等。

需要: 当用户在组中提问或进入/离开组时,其他用户需要在应用屏幕中看到新用户。我可以在服务器上进行轮询以检查并更新UI,但这是现代人不允许的。我对这个主题的搜索引出了两件事:SignalR和NotificationHub。

目前的架构: 客户 - >带有backbone.js的PhoneGap应用程序。 后端 - >带有实体框架和Azure Sql Server的Asp.NET Web API。

我已经考虑过使用通知集线器和标签了。 例如,当用户进入在线组时,它会向服务器发送一个请求以注册" grouplisten:{groupId}"标签。然后,服务器将标签注册到用户的设备,并使用标签" grouplisten:{groupId}"向所有其他设备发出通知,以便其他用户使用最近的更新UI加入了用户。此外,当用户离开组时,它向服务器发送请求以删除" grouplisten:{groupId}"标记并通知设备" grouplisten:{groupId}"。但是通过这个简单的例子,看起来这样会变得无法管理。

1 个答案:

答案 0 :(得分:11)

这两种技术在移动平台上都有其优点和缺点:

SignalR

优点:

  • 非常适合实时交付,其中时间或从服务器接收通知很重要。
  • 所有主流浏览器都支持网络客户端,IE8 +,FireFox,Chrome,Safari和Android WebView,iOS Safari,IE移动,因此它们运行良好。
  • 解决方案可以用JS编写,无需了解

缺点:

  • 所需的专用服务器,但可能托管共享托管,因为不是性能饥渴。
  • 在Cordova中,特别需要手动连接管理以获得更好的用户体验,而不是依赖SignalR提供的重新连接机制(这对于iOS来说是必需的,这可能会导致网络连接无法保留电池,到目前为止在Android上不是问题)
  • iOS上的Safari存在一个已知问题(需要使用长轮询配置you can find more on that issue here运行),在实际情况下频繁的ajax请求会强制您为SignalR使用不同的IP地址服务器在iOS上实现无缝体验。

Azure通知中心

优点:

缺点: