Signal R和Push Notifications在实时应用程序(如聊天)中的区别

8
我希望创建一个适用于iOS、Android和Windows手机的聊天应用程序,并且在未来还应该能够与浏览器一起使用。我的搜索结果是使用SignalR和Azure Mobile Services(AMS)。
我的问题如下:
1)SignalR在幕后使用Websockets。Websocket在Android、IOS、Windows手机和所有移动/桌面浏览器中都被支持吗?
2)如果不支持,这将如何影响使用SignalR和AMS?
3)或者我应该只是使用AMS支持的推送通知?
4)您可以分享任何示例应用程序/代码片段吗?请注意,我将使用Xamarin进行应用程序开发。
5)您可以为此提供任何建议吗?

以下链接部分回答了关于Websockets的问题,非常有帮助。http://visualstudiomagazine.com/Articles/2013/11/01/How-To-Use-SignalR-in-iOS-and-Android-Apps.aspx?Page=1 - Ankur
2个回答

10
Azure 移动服务已经集成了 SignalR,并且 Azure 移动服务为客户端应用程序提供 SDK,我认为它是开箱即用的。
请参见: 使用 ASP.NET SignalR 和 Azure Mobile .NET 后端实现实时通信 掌握托管的 Azure 移动服务后端-第四部分 包括高价值移动后端功能

您将发现许多功能包含在 Mobile Services 中,并可轻松用于您的 Web API。移动推送通知、使用 SignalR 的实时通知(自动缩放)、消费者应用程序的社交验证、离线数据同步以处理偶尔连接的情况等等。

示例:

注意:

  • Azure移动服务基于WebAPI!

  • 对于您想要的内容,您不应仅使用推送通知,因为如果用户忽略它,则iOS中的推送通知无法被应用程序读取,只有在android或windows中才能获取和保存。另一个可能成为问题的事情是,如果应用正在运行,您不应该显示推送通知,而应该显示包含通知的弹出窗口...并且推送通知可能会有来自Push Notification Service(Apple、GCM、WNS等)的延迟。推送通知是当用户未使用应用程序时发生的应用程序内事件的通知。

我认为您应该使用AMS+SignalR进行实时通信,然后在用户不使用应用程序时使用推送通知更新用户。


http://visualstudiomagazine.com/Articles/2013/11/01/How-To-Use-SignalR-in-iOS-and-Android-Apps.aspx?Page=2 - Ankur
可以使用Pusher、PubNub或其他实时服务替代SignalR,这些服务对于类似聊天的应用程序有更好的支持,并且具有Xamarin SDK。 - Ankur

3
使用SignalR在限制成本的情况下,可以高效地避免触发推送通知上限。但是,您需要在应用程序变为活动或非活动状态时正确地打开/关闭通知,否则应用程序可能会进入后台,推送通知将无法发送。
您可以采用纯推送方法,在应用程序处于非活动/后台状态时显示通知,并在应用程序处于活动状态时仅拦截通知,消耗并取消其显示。我已经写了一篇博客文章介绍这种方法,并在Github上提供了iOS、Android和Windows Universal的3个示例:http://www.ageofmobility.com/2014/10/06/azurechatr-building-a-cross-platform-chat-app-for-windows-ios-android/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接