gpt4 book ai didi

java - 如何通知即时消息 (IM) 应用程序的客户端有更新?

转载 作者:行者123 更新时间:2023-12-01 10:34:58 25 4
gpt4 key购买 nike

我曾遇到过有关此主题的不同问题,但是,没有一个能消除我对通知服务器客户端 IM 应用程序客户端的最佳方法的疑虑。

问题:整个问题是如何通知客户端应用程序更新。我已经见过以下方法:

  1. 客户端不断检查更新:客户端应用程序会不时地在服务器中执行检查,以查看是否有针对该特定用户的更新;问题:它根本不具备性能。假设您有 100 万用户,每个用户每秒都会检查新更新。 Serve 每秒必须处理一百万个请求。行不通。

  2. 客户端应用程序打开套接字:客户端应用程序打开套接字并将其地址发送到服务器。服务器则保留此信息,并在需要通知客户端某些更新时连接到套接字。问题:客户端通常会连接到NAT,因此,它可以访问的IP位于不可见的范围内。为了向该客户端发送消息,必须配置 NAT 中的端口转发,但这是无法完成的。

尽管有技术,我认为这种方法将永远被使用,但是,我不知道如何解决上述问题。

  • Google Cloud Message (GCM):使用 GCM 服务通知客户端任何更新。 问题:使用第三方服务器来处理 IM 似乎并不正确,并且会引发对系统可扩展性的担忧。当消息和用户数量呈指数级增长时,服务似乎就会下降。尽管如此,在传递到目标之前传递两个服务器的信息似乎只会增加过程中的瓶颈。

  • 2 和 3 的组合:当最后一个持久地址不再可用时,使用 GCM 到达客户端。问题:与2中描述的相同

  • XMPP:我看到很多答案都表明将 XMPP 用于 IM 应用程序,但是,根据我在网络上找到的内容,XMPP 是一种协议(protocol)。例如,我不明白它如何解决2中描述的问题。

  • 鉴于上述选项,有人可以指示我应该尝试哪条线路吗?这些方法中哪一种最有可能成功?

    提前谢谢大家。

    最佳答案

    使用 Google 云消息传递。与您所说的相反,该服务是为了扩展到数十亿用户而构建的,它通常不会引入性能瓶颈。

    您基本上想要做的是使用消息服务来唤醒设备。如果您坚持,您仍然可以使用客户端服务器方法以及您自己的协议(protocol)来让客户端从后端查找新消息。

    关于java - 如何通知即时消息 (IM) 应用程序的客户端有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34816761/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com