Ich meine, verwenden sie Ping-Pong-Nachrichten, um Benutzerverbindungsinformationen zu erhalten? Kurz gesagt, woher wissen sie, wo sie für die kommende Anfrage senden sollen?
Für iOS verwenden diese Apps APNS (Apple Push Notification Service).
Dies ist ein Service von Apple, der Anwendungen hilft, Benutzer zu warnen, wenn etwas passiert.
Kurz (und vereinfacht) funktioniert es so
Wenn die App installiert ist, wird der Benutzer gefragt, ob die App Push-Nachrichten an das Telefon senden darf.
Wenn der Benutzer akzeptiert, registriert sich die App beim APNS-Server (gehostet von Apple) und registriert ein "Geräte-Token". Dieses Token ist eine Seriennummer, die dem Apple Server hilft, den Überblick über das Telefon zu behalten.
Die App verbindet sich mit dem Anwendungsserver (z. B. dem Viber-Server) und sendet das Geräte-Token ebenfalls an diesen Server. Der Server verbindet es mit einem bestimmten Benutzer.
Wenn der Benutzer einen Anruf erhält, kontaktiert der viber-Server den APNS-Server, der wiederum den Benutzer alarmiert.
Der APNS-Server verfolgt alle Apps, die der Benutzer auf seinem Telefon hat. Es wird Benachrichtigungen für alle von ihnen behandeln. Die Verbindung zwischen dem iPhone und dem APNS-Server ist in die iOS-Plattform integriert und geschieht regelmäßig automatisch.
Wenn der APNS-Server vom Viber-Server informiert wird, dass etwas für ein bestimmtes Geräte-Token passiert, kontaktiert der APNS-Server dieses bestimmte Telefon und sendet eine Nachricht an das Telefon. In diesem Fall wird dem Benutzer mitgeteilt, dass er / sie einen eingehenden Anruf von viber erhält.
Dokumentation für APNS finden Sie hier: Programmierleitfaden für lokale und Push-Benachrichtigungen
Wenn es sich um Android handelt, gibt es einen entsprechenden Dienst C2DM Meine Vermutung ist, dass diese Apps auf Android mit diesem Dienst ähnlich funktionieren.
Wenn Sie ein wenig Hilfe brauchen, um mit Push anzufangen, gibt es einen großartigen Service namens Urban Airship , der die Dinge viel einfacher macht, unterstützt iOS, Android und andere Plattformen.
BEARBEITEN: Wenn die Anwendung bereits geöffnet ist, kann die Verbindung entweder über eine Socket-Verbindung geöffnet bleiben oder der Inhalt kann durch Abfragen aktualisiert werden. Es hängt davon ab, wie zeitkritisch die Anwendung ist.
Diese Apps stellen alle eine Verbindung zum Server des Anbieters her und halten die Verbindung offen. Der Server kann also feststellen, ob der Client verbunden ist. Von da an ist es nur noch normale Netzwerkkommunikation: