【问题标题】:What kind of push messaging system is suitable for a messenger app with multiple platform?什么样的推送消息系统适合多平台的消息应用?
【发布时间】:2017-09-02 17:05:40
【问题描述】:

我正在开发一个包含两个(或更确切地说是三个)部分的信使(聊天)项目。

  1. 在服务器端,我有一个 ASP.NET WepApi 项目。
  2. 在客户端,我有一个由 React-Native 开发的移动应用 (Android)。
  3. 还有一个由 Reactjs 开发的 Web UI 部分。

我使用 signalR 来管理客户端和服务器之间的连接以传递消息。它在网络和移动设备上都可以正常工作(移动应用程序活动除外)。

我还需要在离线模式下将消息推送到我的移动应用。显然解决方案是使用 GCM(谷歌云消息传递)。我解决了这个问题,让它发挥作用。

现在我必须维护两种不同的代码,一种是用 signalR 方式编写的,另一种是用 google GCM 编写的。而且我认为这不合逻辑。

我能否在我的移动应用中移除对 signalR 的依赖,并将所有消息委托给 GCM?像 Whatsapp 这样的信使应用程序有什么作用?

【问题讨论】:

  • 你见过 Firebase 数据库吗?借助其实时数据库,您可以在几天内制作一个聊天应用程序。查看此示例项目:github.com/novoda/bonfire-firebase-sample
  • 谢谢。所以根据你的评论,我最后一个问题的答案是肯定的。对吗?
  • 是的。借助 Firebase 数据库和 Firebase 云消息传递,您可以实现功能齐全的聊天应用。但是它不会是p2p。它将在 firebase 服务器上运行。

标签: android react-native websocket signalr maintenance


【解决方案1】:

您可以在不使用 FirebaseDatabase 且仅使用 SingnalR 的情况下发送和接收推送消息。

解决方法很简单;发送者通过 SignalR 连接调用一个函数,该函数检查接收者是否在在线用户列表中。如果它在列表中,它通过 SignalR 发送消息,否则通过推送消息。

我在 Web、iOS 和 Android 上都使用了这种方法几年,没有遇到任何问题。与 FirebaseDatabase 相比,唯一的缺点是,如果发件人没有互联网连接,当它上线时他无法发送它,你应该手动实现它。但是,FirebaseDatabase 可以做到这一点。

【讨论】:

    【解决方案2】:

    您见过 Firebase 数据库吗?借助其实时数据库,您可以在几天内制作一个聊天应用程序。

    查看此示例项目:https://github.com/novoda/bonfire-firebase-sample

    【讨论】:

      猜你喜欢
      • 2015-06-14
      • 1970-01-01
      • 2013-11-05
      • 2010-09-20
      • 2014-06-02
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多