【问题标题】:How can a messaging server indetify target client and send push notification消息服务器如何识别目标客户端并发送推送通知
【发布时间】:2018-02-28 18:00:45
【问题描述】:

我的客户是 Android 设备。客户端想要向另一个客户端发送一些信息,该信息将首先发送到应用服务器,然后服务器将通知中间件服务(某种消息代理),该服务将负责向目标客户端发送推送通知(告诉它从应用服务器轮询)。
我想知道:
此中间件服务将如何识别要通知的客户端设备?
更具体地说,推送通知服务器如何定位将通知发送到哪个物理设备?
我的要求是客户端即使在使用 VPN 或代理(类似于 WhatsApp)时也应该能够获得通知。此外,如果客户端断电,中间件会将消息排入队列,并在客户端再次通电后传递它们。
我一直在研究诸如 Firebase 云消息传递和 MQTT 代理之类的东西,但我想自己实现类似的东西。
我想用 Java 实现它。

【问题讨论】:

    标签: java networking push-notification client-server instant-messaging


    【解决方案1】:

    您的客户(拥有唯一的 id 和令牌)会将消息发送给另一个在数据库中也有唯一的 id 和令牌的客户。所以,

    服务器会将接收者的 id 映射到接收者令牌并将通知发送给接收者..

    数据库(后端)将针对每个客户端具有唯一的 ID(可能是主键),并且针对每个客户端具有唯一的令牌(用于发送通知)。因此,当发送者客户端发送消息时,后端脚本会将接收者客户端(发送者发送给的对象)id 映射到接收者客户端令牌。然后将通知发送到特定令牌。

    【讨论】:

    • 服务器如何找出确切的客户端?如果客户正在改变网络怎么办?我的服务器将如何与我的客户建立联系?客户端拥有服务器的 IP 地址,但服务器对客户端(以及将执行消息传递的中间件服务)一无所知。
    • @Shankhadeep 无论网络是什么,发送者都会针对接收者..后端会将通知发送到接收者 ID。
    • 我明白你想说什么。但我真正的问题是,中间件服务如何知道将通知实时发送到哪个实际的 Android 设备? 客户端不会轮询,除非它从服务器获得通知。如果客户端断电,消息会在中间件中排队,并在客户端上电时发送。
    • 这是一个networking 概念。我解释了系统后端的实际工作原理。
    • 但我需要有关传输方式的信息。我了解有关键和令牌映射的所有部分。我已经将它们整合到我的架构中。您是否有某种详细的解释或资料可以详细解释这一点?我想完全理解这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2014-05-12
    • 1970-01-01
    相关资源
    最近更新 更多