Cordova 服务器到Phonegap推送:信号器与Azure通知中心

Cordova 服务器到Phonegap推送:信号器与Azure通知中心,cordova,asp.net-web-api,push-notification,signalr,real-time,Cordova,Asp.net Web Api,Push Notification,Signalr,Real Time,好吧,我在继续我的Phonegap应用程序开发时处于一种两难境地:对于实时事件通知,我应该使用Azure notification Hub还是Signal 据我所知,signar通过使用web套接字非常适合于实时web应用程序。而notification hub使跨多个平台发送推送通知变得非常容易。 为了便于响应,让我解释一下我目前的结构以及我的应用程序应该做什么 应用程序: 它基本上是一个应用程序,用户可以创建组并邀请其他用户。用户还可以使组“在线”,以便其他用户可以“进入”该组。当群组在线且

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

据我所知,signar通过使用web套接字非常适合于实时web应用程序。而notification hub使跨多个平台发送推送通知变得非常容易。 为了便于响应,让我解释一下我目前的结构以及我的应用程序应该做什么

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

需要: 当用户在组中提问或进入/离开组时,其他用户需要在应用程序屏幕中看到新用户。我可以在服务器上进行轮询以检查这一点,并根据需要更新UI,但这是现代所不允许的。我对这一主题的研究使我想到了两件事:信号器和通知中心

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

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

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

信号员 优点:

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

  • 需要专用服务器,但可能使用共享主机托管,因为不需要性能
  • 在Cordova中,特别需要手动连接管理以获得更好的用户体验,而不是依赖Signal提供的重新连接机制(这是iOS所必需的,iOS可能会因为电池保护而中断网络连接,在Android上,到目前为止还不是问题)
  • iOS上的Safari存在一个已知的问题(需要使用长轮询配置运行),在经常出现ajax请求的真实场景中,这会迫使您为SignalR服务器使用不同的IP地址,以便在iOS上获得无缝体验
Azure通知中心 优点:

  • 使用谷歌、苹果和微软的现有基础设施向用户发送通知,但它们都不保证立即发送通知。您必须分别阅读每个平台:
    • 苹果公司:
    • 谷歌:
  • 不需要专用服务器
缺点:

  • 不保证立即授权
  • 需要使用每个本机平台的语言。(Cordova有一个很好的插件,但它不允许在应用程序在Android上暂停时接收通知,并且在iOS上没有64位构建)

我确信信号员能胜任这项工作。因为你在问题中提到了WebSocket,所以请确保你意识到使用Signaler获得WebSocket需要什么。获取WebSocket对服务器和客户端都有很高的要求。基本上,您需要在客户端和服务器上使用Win8+,否则您将获得SSE、Longpollingetc@Uffe客户端不需要使用win8+,我想,您能验证一下吗?@mentat浏览器支持websockets不需要win8+,但桌面和电话客户端需要win8+。服务器始终需要win8+和.NET4.5+来支持WebSocket。但是这个链接比我描述的更好。第一个客户端平台是Android(上面是PhoneGap)。SignalR还可能吗?Cordova中的Android对SignalR来说非常好,因为Android上的网络比iOS上的更可靠。您可以在Android 4.xCool上使用开箱即用的信号器。通知中心的交付时间如何。你已经说过不能保证立即交货,但最坏的/定期交货时间是多少?例如,在我的情况下,10秒是可以接受的,而1分钟就太多了。不同的通知提供者有不同的规则。例如,APNS(苹果)在新通知到达时替换现有通知。为了更好地理解,您必须分别阅读每个平台的规则。通常你会立即收到信息,但你知道。。。我使用Notification Hub向用户发送广告通知,而不是使用他们创建可靠的消息。看起来SignalR更适合我的情况。谢谢!信号员对我来说工作得非常好。一般来说,这是一项开箱即用的工作。我有一个非常挑剔的客户,他们要求我手动维护连接,但overwise工作起来很有魅力