【问题标题】:Standalone push notification server implementation独立推送通知服务器实现
【发布时间】:2015-10-16 02:43:49
【问题描述】:

我想实现自己的推送通知服务器,而不仅仅是需要我想知道如何实现它的产品。

我阅读了有关 tigase、ejabberd 和 openfire 等 XMPP 服务器的文档。我知道 XMPP 服务器可以直接处理在线消息,就像以聊天消息的形式发送通知一样。以下是我认为正确的:

假设:拥有 OTT(即 Telegram),您可以通过 XMPP 客户端(移动应用)和 XMPP 服务器(即 ejabberd)发送通知或聊天消息,或者考虑一个 pub在移动设备上获取服务器状态更改的 /sub 应用程序将 ejabberd 用作 XMPP 服务器,并将另一个 XMPP 客户端用作移动设备上的应用程序。

我的问题是,如果我上面提到的假设是正确的,推送通知服务器将是一个消息队列服务器,用于为离线用户排队 Pub/Sub 消息,以及一个 XMPP 服务器,用于向在线用户发送通知/消息。

对吗?通过让消息代理处理队列和 XMPP 服务器来处理消息发送,我可以拥有自己的类似 GCM 的服务器吗?

【问题讨论】:

    标签: android push-notification xmpp ejabberd google-cloud-messaging


    【解决方案1】:

    您绝对可以使用像 ejabberd 这样的 XMPP 服务器在 Android 上实现您自己的推送通知服务。您需要一个应用程序始终保持连接,并在收到消息时使用本地 Android API 在移动设备上显示通知。

    在 Android 上,接收通知与显示通知显然是分开的。这意味着您可以通过您喜欢的任何方式接收它,但仍将其显示为标准通知,即使它没有通过 GCM 到达您的设备

    【讨论】:

    • 感谢您的回答,我知道我有能力做到这一点。但是 HOW 是问题所在。它是否与 GCM 一样有效。使用 XMPP 服务器实现推送通知的良好架构是什么?
    • 它确实可以像 GCM 一样高效,这取决于您可以构建的保持 XMPP 链接的客户端的完善程度。架构非常简单:Android 客户端接收连接到作为推送调度程序的 XMPP 服务器的消息。
    • 首先我要感谢您的耐心和回答。该解决方案适用于在线用户,我的问题是我不知道在客户端离线的情况下会发生什么。谁负责为离线用户保存和排队消息? XMPP 服务器是否处理此排队并在用户上线时将存储的消息发送给用户?
    • 每个 XMPP 服务器都实现了离线消息队列。它们都支持在重新连接时发送离线消息。正如您可以想象的那样,所有聊天系统都希望其用户在离线时收到他们错过的消息。所以,是的,XMPP 会解决这个问题。
    • 是的,构建最终产品并非易事。建立一个健壮的客户端是困难的。建设基础设施是困难的。如果你只是想做推送提醒,使用谷歌基础设施更容易也更便宜。你需要一个很好的理由来建立自己的。
    猜你喜欢
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多