【问题标题】:Server to Phonegap push: SignalR vs Azure Notification Hub服务器到 Phonegap 推送:SignalR 与 Azure 通知中心
【发布时间】:2014-11-08 12:57:43
【问题描述】:

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

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

应用程序: 它基本上是一个应用程序,用户可以在其中创建组并邀请其他用户。用户还可以使组“在线”,以便其他用户可以“进入”组。当群组在线且用户已进入时,他们可以发送问题、交换消息等。

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

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

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

【问题讨论】:

  • 我确信 SignalR 能够完成这项工作。只要确保您意识到使用 SignalR 获取 websockets 需要什么,因为您在问题中提到了 websockets。获取 websocket 对服务器和客户端都有相当高的要求。请参阅asp.net/signalr/overview/signalr-20/… 基本上您需要在客户端和服务器上都使用 Win8+,否则您将获得 SSE、Longpolling 等
  • @Uffe 客户端不需要在 win8+ 我想,你能验证一下吗?
  • @mentat 支持 websockets 的浏览器不需要 win8+,但桌面和手机客户端需要 win8+。服务器总是需要 win8+ 和 .NET4.5+ 来支持 websockets。但是这个链接比我描述得更好。
  • 第一个客户端平台是安卓(PhoneGap 在它之上)。 SignalR 还能用吗?
  • Cordova 中的 Android 非常适合 SignalR,因为 Android 上的网络比 iOS 上的可靠得多。您可以在 Android 4.x 上直接使用 SignalR

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


【解决方案1】:

两种技术在移动平台上各有利弊:

信号R

优点:

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

缺点:

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

Azure 通知中心

优点:

缺点:

【讨论】:

  • 酷。以及通知中心的交付时间如何。您已经说过它不能保证立即交付,但最差/正常的交付时间如何?例如,在我的情况下,10 秒是非常可以接受的,而 1 分钟就太多了。
  • 不同的通知提供者有不同的规则。例如,APNS(Apple)如果有新通知,则替换现有通知。您必须分别阅读每个平台的规则以便更好地理解。通常您会立即收到消息,但您知道...我使用通知中心向用户发送广告通知,而不是使用它们来创建可靠的消息。
  • 看起来 SignalR 更适合我的情况。非常感谢!
  • Signalr 非常适合我。一般来说,它是开箱即用的。我有非常挑剔的客户,需要我手动维护连接,但过分的工作就像一个魅力
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
  • 2018-04-28
  • 2014-01-07
  • 1970-01-01
相关资源
最近更新 更多