Chaque exemple de GAE Chats utilise un type d'interrogation. Cependant, si mon application GAE contient une liste de clients (dans le magasin de données si nécessaire), je pourrais peut-être éviter d'interroger en envoyant un message à tous ces clients. Comment puis-je atteindre cet objectif?Comment envoyer des messages aux clients sans interrogation?
Répondre
Si vous parlez HTTP, la réponse courte est que GAE ne prend pas en charge il. Ce que je pense que vous demandez est parfois appelé BOSH. Une fois que WebSockets deviendra plus répandue, ils seront une excellente solution pour ce problème.
Dans le même temps, vous voudrez peut-être regarder XMPP. En utilisant XMPP, vous pouvez éviter l'interrogation. Google a annoncé un Channel API (encore à paraître) qui vous donnera essentiellement les mêmes fonctionnalités que les websockets.
Vous avez probablement vu quelques exemples de salle de chat ...
Puisque vous voulez juste d'envoyer un message aux utilisateurs sur votre datastore (Astuce: la IMProperty est grande pour stocker ces données), il est juste une question d'envoyer directement le message:
from google.appengine.api import xmpp
# `destination` is a list of JIDS
# `message` is a normal unicode string
xmpp.send_message(destination, message)
vous pouvez trouver un tutoriel sur l'utilisation XMPP par Nick Johnson here
Notez que vous pouvez maintenant utiliser l'API App Engine canal pour cela: http://code.google.com/appengine/docs/python/channel/
Vous pouvez créer un canal pour un client donné en utilisant:
channel.create_channel(client_id)
Ensuite, lorsque vous souhaitez mettre à jour ce client, envoyer un message:
channel.send_message(client_id, message)
Fondamentalement chaque client obtiendra une connexion persistante que vous pouvez pousser des messages.
- 1. Serveur socket avec plusieurs clients, envoyer des messages à de nombreux clients sans nuire à la vivacité
- 2. Comment envoyer des messages XML aux services Web
- 3. Envoyer des messages aux applications sur le réseau (.Net)
- 4. Envoyer des messages électroniques programmatiques
- 5. Comment envoyer des messages entre entreprises
- 6. Comment envoyer des messages à plusieurs utilisateurs?
- 7. Comment joindre mes tables "clients" et "messages"?
- 8. stream socket envoyer/recevoir des messages diffusés?
- 9. Comment recevoir des messages via http sans MSMQ
- 10. Mon client C++ ActiveMQ peut envoyer des messages sans recevoir de messages.
- 11. XML Envoyer des messages à Rails
- 12. Comment envoyer automatiquement par email les clés d'enregistrement des clients?
- 13. envoyer des messages à des objets
- 14. Java RMI - envoyer des stubs client à d'autres clients
- 15. envoyer des messages instantanés via python (msn)
- 16. postfix: Comment envoyer des emails aux utilisateurs
- 17. envoyer des messages électroniques comme html
- 18. Comment vendez-vous l'intégration continue aux clients?
- 19. Test de la messagerie Drupal et des notifications sans envoyer de messages
- 20. Programme Android pour envoyer des messages
- 21. Spy ++ alternative qui peut envoyer des messages
- 22. Envoyer et recevoir des messages SOAP
- 23. envoyer des messages formatés sur connexion TCP
- 24. envoyer des messages électroniques dans .NET
- 25. Comment puis-je obtenir un numéro de téléphone auquel les clients peuvent envoyer des messages sur mon site Web?
- 26. Comment puis-je envoyer une mise à jour à un fichier war aux clients?
- 27. Comment envoyer des messages entre deux instances d'un UITableViewCell personnalisé?
- 28. comment envoyer des messages html en utilisant PEAR mail
- 29. Comment envoyer et recevoir des données Messages SMS
- 30. Comment envoyer des messages à partir de la procédure stockée?
Ainsi, lorsque j'intègre le chat dans mon application, je pouvais envoyer des messages aux utilisateurs en utilisant xmpp et jids comme: whatever @ upserip: userport. Ensuite, mon application envoie mon message sous forme de requête http. correct? puis-je traverser le NAT comme ça? – Laures
@Laures maintenant vous m'avez confus. D'après ce que je comprends, ce que vous cherchez est en fait sur la réponse de Robert, pas sur moi. Je vais upvoting sa réponse. –
ok ... maintenant je suis confus. Je souhaite recevoir des informations des clients et distribuer les données reçues à tous les clients. Je veux faire ceci sans interroger. quand le canal api est sorti cela devrait être simple, mais pourquoi est-il imposible maintenant? (peut-être que j'aurais dû mentionner que c'est mon premier projet lié gae ou réseau) – Laures