首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WhatsApp或任何其他消息传递服务上接收消息?

问如何在WhatsApp或任何其他消息传递服务上接收消息?
EN

Stack Overflow用户
提问于 2015-07-05 21:05:21
回答 3查看 1.9K关注 0票数 2

有人能告诉我我的手机是如何接收whatsapp消息的吗?例如,我的手机是每秒都请求whatsapp服务,还是在服务器端收到我的消息时,服务器会向我的手机发送ping。我不想知道确切的过程,但一个概述就可以了。

EN

回答 3

Stack Overflow用户

发布于 2015-07-05 21:21:31

好吧,我想,在这个范围内回答并不那么容易,但这里是如何工作的。

为此,您可能需要了解移动端和服务器端的技术,side.So,让我尝试以一种非常简单的方式来解释它,这可能是实现。

1)不能,您的手机不是每次都ping服务器。像这样的轮询在网络上增加了很多开销,而且如果响应有延迟,可能会堆叠多个调用,从而导致服务器端的巨大流量。相反,这是另一种方式。每当服务器收到任何消息时,它都会ping您,而不是告诉您收到了一条消息。

2)希望点1清楚地表明了它的另一种方式。现在我想让你了解一下推送通知。推送通知是服务器可以用来通知手机任何新的消息、信息或更新的东西。这里有一个链接,可以给出更多关于安卓https://parse.com/tutorials/android-push-notifications推送通知的细节

3)服务端如何处理请求。这本身就是一个大话题。基本上是这样的。我假设有两个用户,A和B

  • 首先Mr A向Mr B发送msg
  • 服务器收到此请求,其中包含用户A(即发送msg的人)和用户B(即要向其发送sg的人)的信息。
  • 服务器进行一些处理以了解Mr B的用户id和有关Mr B的其他信息,然后执行推送,以便用户B可以接收此通知。

当然,这项工作涉及到许多技术,以便处理数百万个并发连接,并在不阻塞其他连接的情况下快速响应。

如果你想对这项技术有一个基本的了解,我建议你看看socket io和node js。下面是一个聊天示例http://socket.io/get-started/chat/

希望这能有所帮助

票数 3
EN

Stack Overflow用户

发布于 2015-07-05 21:34:13

WhatsApp使用XMPP (eXtensible消息传递和存在协议)来处理消息传递系统。XMPP在很大程度上类似于HTTP,客户端使用XMPP服务器打开套接字,并在客户端登录后一直保持打开状态。它不像常规的REST API,客户端打开套接字,发送/接收数据,然后关闭套接字。只要您登录,套接字就会打开。对于WhatsApp,这是永恒的(不是真的,如果连接终止,WhatsApp会自动重新连接)

XMPP协议已被用于各种聊天应用程序,如Google Talk、Facebook messenger等。

就实际技术而言,WhatsApp在安卓上使用大量定制版本的Smack库来构建其客户端,并使用定制的eJabberd服务器来处理XMPP流量。他们可能有不同的后端解决方案来处理数据,虽然可能在一个云存储/计算网络上(我认为这是heroku,但没有真正的想法)。在iOS和其他平台上,我想他们可能已经开发了自己的库。开发自己的库并不是一项很大的工作,尤其是当您有自定义需求并拥有一支开发团队的时候。我使用了一个适用于Windows Phone的库,并对它们进行了大量定制,以便为我们工作。我对这个库做了一些改进,但由于时间的原因,我不能把它们提交给原始的repo (文档确实很难)。

无论如何,如果你对学习这项技术感兴趣,你可以阅读Oriely的"XMPP:权威指南“,并可以访问XMPP Standards Foundation。

票数 2
EN

Stack Overflow用户

发布于 2015-07-05 21:12:53

基本上就是说,当有消息时,Server会通过Push Service向客户端发送通知。在客户端必须向服务器注册使用服务之前,服务器将为客户端提供一个Id,然后使用它来指定哪个客户端将接收消息。在Here和Here中阅读更多内容

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

https://stackoverflow.com/questions/31230642

复制
相关文章

相似问题

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