2010-03-13 9 views

Répondre

14

Pour l'instant, à long polling est probablement la meilleure solution. Beaucoup de sites de grands noms ont de longues implémentations d'interrogation, y compris Facebook, Google et eBay. Tout le monde n'a pas Flash installé/activé dans leurs navigateurs. Dans le futur Web Sockets pourrait être en mesure de faire un travail plus facile pour nous.

Mise à jour: Au moment d'écrire ces lignes, le WebSocket API est implémenté dans le dernier WebKit (Chrome/Safari) et Firefox 4 beta. Il existe également une version d'instantané public d'Opera available for download avec une implémentation de l'API. Cela signifie que le test de l'API est largement disponible. Pour plus d'informations, voir this answer.

+0

+1 J'aime longue interrogation. L'avenir pourrait être différent, mais je n'irais pas avec Flash. – Plynx

+0

J'ai utilisé phpfreechat (qui utilise une longue interrogation) et avec seulement 20 personnes est très très très lent !! Pourquoi ? J'ai besoin de créer une application en temps réel pour des millions de personnes simultanément! – xRobot

+2

@xRobot: Avez-vous vérifié la FAQ? [http://www.phpfreechat.net/faq] Il offre une solution pour un problème de performance lié à l'accès au disque. Autre que cela, vous avez besoin d'un serveur très puissant pour gérer des millions de connexions en même temps. Les requêtes HTTP normales sont ouvertes-> get data-> close, donc les connexions simultanées sont moins nombreuses. Avec une longue interrogation, il est ouvert-> attendre les données-> fermer, tant de simultanés sont presque garantis. Les serveurs ne peuvent gérer qu'un nombre limité de connexions simultanées, et vous obtenez ce que vous payez, si vous attrapez ma dérive! –

1

Je ne pense pas que l'interrogation à long terme est la façon la plus efficace de faire Comet. Quoi qu'il en soit, il envoie une nouvelle requête HTTP une fois la réponse obtenue. Cela a coûté plus de requêtes HTTP que le streaming HTTP. Mais, l'interrogation longue peut être plus fiable et plus facile à implémenter que le streaming HTTP. Selon ce article in Google Code, le streaming HTTP peut ne pas être fonctionnel si le contenu des tampons de proxy HTTP intermédiaires.

Il est intéressant que GMail n'utilise pas l'interrogation longue. Avec l'aide de Http sniffer, il est clair qu'il utilise le streaming HTTP pour Comet.

+0

Aussi Facebook ne pas utiliser de longues interrogations? Connaissez-vous un exemple de streaming en http? Thans^_^ – xRobot

+0

Je ne l'ai pas testé personnellement, mais on me dit que le chat Facebook est implémenté par interrogation longue. GMail est un streaming Http. Outlook Web Access l'est aussi. –

+0

@xRobot, si vous êtes impatient de savoir comment, cette URL est un bon résumé: http://cometdaily.com/2007/12/11/the-future-of-comet-part-1-comet-today/ –

4

Toutes les différentes méthodes ont des avantages et des inconvénients différents, je ne suis pas un spécialiste sur les différences, c'est pourquoi je vous recommande éviter de faire le choix, éviter le développement et le réglage que chaque approche implique, éviter l'évolution future des technologies disponibles (à savoir que l'arrivée sockets web HTML5.), en utilisant une bibliothèque qui fait abstraction de la méthode de transport utilisée, et choisit la meilleure approche en fonction des capacités du client:

http://socket.io/

cette merveilleuse bibliothèque rend étonnamment s créer des applications en temps réel imple! et il existe diverses implémentations côté serveur: Python (Tornado), Java, Google GO, Rack (Ruby), en plus de l'implémentation grand public dans Node.js (JavaScript côté serveur)

+0

Yup .. !! Déjà utilisé avec Java et NodeJS. son outil brillant. Pour Java, nous pouvons utiliser l'implémentation du serveur netty. – agpt

Questions connexes