【发布时间】: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