任何人都可以告诉我手机上收到的是什么whatsapp消息?比如,我的手机是否每秒都会请求whatsapp服务,或者当服务器端收到我的消息时,服务器是否会发送电话。我不想知道确切的程序,但概述可以完成这项工作。
答案 0 :(得分:3)
嗯,我想,在这个范围内回答起来并不容易,但这是如何运作的。
为此,您可能需要了解移动端和服务器端的技术。让我尝试以非常简单的方式解释它,这可能是实现。
1)不,您的手机每次都不会ping服务器。像这样的轮询会增加网络上的大量开销,如果响应延迟,也可以堆叠多个呼叫,从而导致服务器端的大量流量。相反,它的另一种方式。每当服务器接收到任何消息时,它会ping你,而不是说你收到了一个消息。
2)希望点1明确表示其他方式。现在希望您了解推送通知。推送通知是指服务器可以通知移动设备任何新的消息或信息或更新。这是一个链接,可以提供有关Android https://parse.com/tutorials/android-push-notifications的推送通知的更多详细信息
3)服务器如何处理请求。这本身就是一个很大的话题。基本上它是这样的。我假设有两个用户,A和B
当然,要完成这项工作需要很多技术才能处理数百万个并发连接并快速响应而不会阻塞其他连接。
如果您想了解该技术的基本视图,我建议您查看socket io和node js。这是一个聊天的例子 http://socket.io/get-started/chat/
希望这有帮助
答案 1 :(得分:2)
WhatsApp使用XMPP(可扩展消息传递和状态协议)来处理消息传递系统。 XMPP主要类似于HTTP,其中客户端使用XMPP服务器打开套接字并在客户端登录时保持打开。它不像常规REST API,客户端打开套接字发送/接收数据并关闭套接字。只要您已登录,套接字就会打开。如果WhatsApp是永恒的(不是真的,如果连接终止,WhatsApp会自动重新连接)
XMPP协议已用于各种聊天应用程序,如Google Talk,Facebook messenger等。
就实际技术而言,WhatsApp在Android上使用大量定制版本的Smack库来构建其客户端,并使用定制的eJabberd Server来处理XMPP流量。他们可能有不同的后端解决方案来处理数据,虽然可能在云存储/计算网络之一(我认为它是heroku,但不是真正的想法)。 在iOS和其他平台上,我想他们可能已经开发了自己的库。开发自己的库并不是很多工作,尤其是当您有自定义需求并拥有一组开发人员时。我使用了一个适用于Windows Phone的库,并对它们进行了大量定制,以便为我们工作。我在库上做了一些改进,但由于时间不足,我无法将它们提交给原始仓库(文档很难)。
无论如何,如果您有兴趣学习技术,您可以阅读Oriely的“XMPP:权威指南”,并可以访问XMPP Standards Foundation。
答案 2 :(得分:0)