首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通知客户端即时消息(IM)应用程序的更新?

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

Stack Overflow用户
提问于 2016-01-15 17:39:29
回答 1查看 77关注 0票数 0

关于这个话题,我已经经历过不同的问题,但是,没有一个问题消除了我对通知客户端的服务器-客户端IM应用程序的最佳方法的怀疑。

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

  1. 客户端不断检查更新:客户端应用程序不时在服务器中执行一次检查,以查看是否有针对该特定用户的更新;Problem:它根本无法执行。假设您有100万用户,他们每秒钟检查一次新的更新。服务必须每秒处理一百万次请求。不管用。
  2. 客户端应用程序打开一个套接字:客户端应用程序打开一个套接字并将其地址发送到服务器。当服务器需要将某些更新通知客户端时,服务器将保留此信息并连接到套接字。Problem:通常客户端将连接到NAT,因此它可以访问的IP处于不可见范围内。为了向此客户端发送消息,必须配置NAT中的端口转发,这是无法完成的。

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

  1. Google ( GCM ):使用GCM服务通知客户端任何更新。Problem:使用第三台服务器来处理IM似乎是不对的,它引起了对系统可伸缩性的关注。当消息和用户的数量呈指数增长时,服务似乎会下降。尽管如此,似乎在向目标交付之前为两个服务器传递信息只会增加流程中的瓶颈。
  2. 2和3的组合:当最后一个持久化地址不再可用时,使用到达客户端。问题:与2中描述的相同
  3. XMPP :我看到了许多答案,表明在IM应用程序中使用XMPP,但是,XMPP是一种协议--正如我在web中所发现的那样。例如,我看不出它如何解决2中描述的问题。

考虑到上面的选项,有人能告诉我我应该选择哪一行吗?这些方法中哪一种最有可能成功?

谢谢你们的进阶。

EN

回答 1

Stack Overflow用户

发布于 2016-04-15 10:41:09

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34816761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档