添加服务器推送以将轮询替换为asp.net WebAPI REST服务

时间:2018-06-07 05:16:57

标签: asp.net rest asp.net-web-api

我希望这里的帖子不是太偏离主题。

我有一个asp.net webAPI服务,它提供了许多路径来接近实时数据(即在10秒内),这需要客户端应用程序轮询更改。

我正在研究哪种技术最好添加"选择"推送通知服务,只是推动"瘦"有效负载告诉客户端应用程序现在是时候调用现有的REST路由进行更新。这样,推送有效负载很小,并且不包含任何安全敏感数据(它仍然使用现有的REST安全基础结构获得)

基于云的消息传递

以前,有人告诉我,对于移动应用程序,我应该使用Firebase cloud messaging或其他一些消息服务,但这似乎不是基于订阅的通知的正确解决方案#34;我在这里谈论。如果客户端在iOS或Android设备上,并且想要消息/通知/警报(等),当应用程序未运行时也可以工作,我当然可以看到这将是有用的,但这似乎不对使用这些已更改数据的通知(可能一直在发生,有时每5秒发生一次)。此外,我不想仅针对这些移动设备,而且例如Web或桌面应用程序,它们也可能使用相同的REST服务

其他技术

我已经看到了Web sockets的提及,或者在asp.net的情况下,提到了使用SignalR的选项(它将使用回退来包装Web套接字)。 SignalR看起来不错,但我担心的是非Web / Windows应用程序(例如iOS,Android)的客户端库的可用性。我也在看Rest Hooks。这些看起来很有趣,但我不能完全看到实际的推送机制"是;看起来他们需要使用HTTP向订户发送POST,这意味着订户还必须充当服务器端点"。

关于此问题的任何想法/最佳做法,或其他人使用过什么?

特别是(验证或其他),对于此用例,使用基于云的消息传递不是正确的事情,因为这些推送通知的频率(即我的服务器通过另一个推送到应用程序的事情)第三方服务推送到设备/应用程序)

提前感谢任何建议!

1 个答案:

答案 0 :(得分:0)

信号器是一个选项

您可以在iOS和Android中使用一些库。我建议你阅读一次https://visualstudiomagazine.com/articles/2013/11/01/how-to-use-signalr-in-ios-and-android-apps.aspx(它有点老了,但是关键)

一些替代方案:

Pusher https://pusher.com/

Socket.IO https://socket.io/

讨论:

  • 为什么你只发送一个薄的有效载荷和信号器?我认为没有任何好处。
  • 为什么“使用基于云的消息传递不是正确的事情”?我不明白你的论点,但我不知道你的应用程序是什么样的。