gpt4 book ai didi

cordova - 服务器到 Phonegap 推送 : SignalR vs Azure Notification Hub

转载 作者:行者123 更新时间:2023-12-04 02:05:03 24 4
gpt4 key购买 nike

好吧,我在继续我的 Phonegap 应用程序开发时遇到了一种困境:对于实时事件通知,我应该使用 Azure 通知中心还是 SignalR?

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

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

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

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

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

最佳答案

这两种技术在移动平台上各有优缺点:
信号R
优点:

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

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

  • Azure 通知中心
    优点:
  • 使用 Google、Apple 和 MS 的现有基础架构向用户传递通知,并且它们中的每一个都不能保证立即传递通知。您必须分别阅读每个平台:
  • 苹果:Quality Service section of APNS docs
  • 谷歌:GCM Advanced Topics

  • 无需专用服务器

  • 缺点:
  • 不保证立即交货。
  • 需要使用每个原生平台的语言。 (Cordova 有出色的插件 https://github.com/sgrebnov/cordova-plugin-azure-notificationhub,但是当应用程序在 Android 上暂停并且在 iOS 上没有 64 位构建时不允许接收通知)
  • 关于cordova - 服务器到 Phonegap 推送 : SignalR vs Azure Notification Hub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25840599/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com