2011-04-01 5 views
2

Salut tous Im construire une application android qui nécessite des données à partir d'un serveur PHP.La communication la plus rapide entre un Android et PHP

Disons que j'ai une entrée de texte sur mon application web. Chaque fois que les utilisateurs déclenchent un "onkeydown", je veux envoyer le personnage à l'application Android et mon application Android sortira simplement le personnage en cours. L'application web enverra constamment de petites "commandes" à l'application myAandroid. Je voudrais savoir quel est le moyen le plus rapide pour recevoir ces commandes.

Je vois quelques options sur la façon dont cela pourrait être implémenté.

1) Mon application Android interroge constamment le serveur pour voir si un message a été écrit.

2) Mon application Android permet de configurer un serveur socket que le script PHP va connecter et envoyer le message.

3) Je suppose que c'est extrêmement lent et inexact, mais je suppose que je pourrais utiliser les notifications push.

Existe-t-il d'autres alternatives? et quelle serait la meilleure solution?

Répondre

3

Le message push n'est pas lent, il est simplement inexact (c'est-à-dire qu'il ne garantit pas qu'il sera envoyé). Néanmoins, il est probablement plus rapide de recevoir un message push que d'interroger le serveur toutes les cinq secondes, disons.

Si vous pouvez vous permettre le temps, cela vaut la peine de combiner les deux approches, c'est-à-dire de repousser les messages et de les regrouper régulièrement. Cela dit, vous ne fournissez pas suffisamment d'informations sur ce que vous faites, il est donc difficile de suggérer quoi que ce soit.

Le moyen le plus rapide serait de se connecter au serveur, de laisser la connexion ouverte, et de laisser PHP diffuser lentement de petites quantités de données illisibles jusqu'à ce qu'il ait un vrai message à envoyer. C'est la chose la plus rapide, mais bien sûr, c'est un non-non en termes d'utilisation de la batterie et ainsi de suite. Alors, s'il vous plaît, expliquez ce que vous essayez de faire.

MISE À JOUR Pour commander à distance un téléphone, vous devez disposer d'une connexion ouverte. Il y a plusieurs façons de le faire, je posterai juste une preuve de concept php.

<?php 
//to send a command to the phone just create a file 
//named command.txt in this directory 
//from any other script 
set_time_limit(0); 

while (true) 
{ 
    if (file_exists('command.txt')) 
    { 
     $command = file_get_contents('command.txt'); 
     rm('command.txt'); 
     echo $command; 
      flush(); 
     unset ($command); 
    } else { 
     echo asc(0); //prevent the connection to be dropped 
      flush(); 
     usleep(200); //sleeps for 200 ms 
    } 
} 

?> 

Cet exemple, il manque beaucoup de choses, il est juste une preuve de concept sur la façon de gérer une connexion ouverte avec PHP. Le côté client doit supprimer tous les octets zéro et conserver le reste des données téléchargées. Ceci est en absolu le moyen le plus rapide de gérer une interaction à distance 1 sens, d'autre part, va sucer la batterie assez rapidement :).

+0

Salut tacone. J'ai mis à jour mon exemple pour mieux refléter ce que j'essaie d'archiver :) Je ne vois pas pourquoi la notification push serait plus rapide car je devrais ajouter une "étape" additionnelle pour mon message "web" -> "service push" -> "appareil ". –

+0

Si vous interrogez le serveur toutes les 5 secondes en moyenne, vous devrez attendre 2,5 secondes jusqu'à ce que vous découvriez que le serveur a un nouveau message. Une notification push peut prendre moins d'une seconde pour arriver. – tacone

+0

Est-ce que l'utilisation de notifications push est vraiment une façon dont j'ai besoin d'enquêter? Je pense que l'utilisation du service push comme celui-ci pourrait être considéré comme du spam? Disons que la batterie n'est pas un problème pour cette application, est-ce qu'une solution de socket serait alors le choix idéal? –

Questions connexes