Question

Je construis une application web en temps réel autant que je sache, les choix les plus populaires sont à court et à long sondages sondages. Quels sont les avantages et les inconvénients pourraient y avoir pour la mesure de l'un sur l'autre?

Était-ce utile?

La solution

  • court sondage (AJAX alias chronomètre en fonction):

    Plus: plus simple, ne pas consommer de serveur (si le temps entre les demandes est longue)
    . Inconvénients: mauvais si vous devez être averti lorsque l'événement se produit serveur sans délai. Exemple (< a href = "http://www.itsnat.org" rel = "noreferrer"> ItsNat basé)

  • Long polling (basé sur Comet a.k.a. XHR)

    Les plus: vous êtes averti lorsque l'événement se produit serveur sans délai. Inconvénients: plus complexe et plus de ressources serveur utilisé. Exemple (ItsNat sur la base)

Autres conseils

juste pour l'argument.

Les deux sont http demande (XHR), et son au moins partiellement faux, il utilise plus de ressources serveur (dépend totalement de la technologie, expliquera plus tard).

interrogation court.

Lot de demande qui sont traitées comme elles viennent sur le serveur. Crée beaucoup de trafic (utilise des ressources, mais Libère eux dès que la réponse est de retour) envoyer:

00:00:00 C-> Is the cake ready? 
00:00:01 S-> No, wait.
00:00:01 C-> Is the cake ready?
00:00:02 S-> No, wait.
00:00:02 C-> Is the cake ready? 
00:00:03 S-> Yeah. Have some lad.
00:00:03 C-> Is the other cake ready? ..

Long vote

Une demande va au serveur et le client attend la réponse à venir (sa non résolue). En cas de serveur avec php / apache signifierait un fil donné naissance à la poignée, que les ressources de réserve, jusqu'à ce que son fait. Ainsi, le trafic est plus petit, mais vous mangez vos ressources rapidement (ou plutôt vous bloquer les ressources). Mais si vous utilisez par exemple nœud (ou toute autre approche async - c ++ qt par exemple), vous pouvez potentiellement réduire au minimum l'utilisation des ressources beaucoup (objet de réponse de magasin pour la demande http et l'utiliser lorsque le travail est prêt)

12:00 00:00:00 C-> Is the cake ready? 
12:00 00:00:03 S-> Yeah.Hame some lad.
12:00 00:00:03 C-> Is the cake ready? 

Si vous comparez cela à court sondage, vous verrez que potentiellement dans le sondage court que vous avez utilisé plus de transfert, mais pendant ces 3 secondes vous réellement prendre le temps de traitement de 1,5s (moyen quelque chose pourrait exécuter entre vos appels). En cas de longue scrutin les mêmes ressources ont été utilisées tout le temps. Maintenant généralement php avec tous libs commence avec 4 Mo de mémoire - alors vous avez un 4-20MB-cadre. Supposons que vous avez 1024MB RAM disponible (gratuit). Say permet d'être pessimiste et supposons que vous utiliserez 25 Mo par un php instace. Cela signifie que vous pouvez obtenir que jusqu'à 40 scripts de connexion à long sondée.

Sa précisément la raison pour laquelle vous pourriez potentiellement servir beaucoup plus avec nœud, comme nœud ne peut pas se reproduire ses instances (sauf si vous voulez utiliser les travailleurs, etc), donc avec la même mémoire que vous pourriez probablement obtenir facilement des connexions 10k suspendus. Vous obtiendrez un pic dans la CPU comme ils viendront, et quand ils seront éventuellement libérés, mais quand ils sont au repos son comme ils ne sont pas là (vous ne payez que pour les structures de mémoire vous garder dans le nœud / c ++).

Websocket

Maintenant, si vous voulez envoyer quelques petites choses, chaque fois qu'ils sont dans ou hors du client, optez pour les websockets (Ws protocole). Premier appel est de taille http demande, mais plus tard vous envoyer seulement des messages, du client vers le serveur (questions nouvelles) et le serveur au client (réponses ou pousse - peut même faire diffuser à tous les clients connectés). Il y a php websocekts libs mais encore une fois, utiliser une technologie différente -. Nœud ou c ++ de préférence

Certains libs, comme socket.io ont une hiérarchie propre, donc en cas d'échec websocket, il remonte à long ou court sondage.

Quand utiliser.

Court vote -. Bien, jamais ^^

Long vote - potentiellement lorsque vous échangez seul appel avec le serveur, et le serveur fait un travail en arrière-plan. De même, lorsque vous ne serez pas question serveur sur la même page plus. De même, lorsque vous ne l'utilisez php comme couche pour gérer la connexion à long sondé (noeud / c ++ peut être une simple couche intermédiaire). Remarque longue interrogation peut être vraiment bénéfique, mais seulement quand vous faites ainsi.

Websocket - vous échangerez potentiellement plus d'un ou deux appels avec le serveur, ou quelque chose peut provenir de serveur que vous ne l'avez pas prévu / demandé, comme la notification d'e-mail ou quelque chose. Vous devez planifier différentes « chambres », dépendent des fonctionnalités. Profitez de la nature en fonction de l'événement de javascript;]

Si vous voulez obtenir l'application en temps réel basé sur la base de données, vous pouvez utiliser ajax à long sondage et la combinaison comète. Long sondage est vraiment bon pour votre et aussi la bande passante est vraiment utile pour l'utilisateur MB.Because lorsque l'utilisateur de demande d'envoi de l'utilisateur paiera comme MB ou une sorte d'Internet connection.For exemple pour à court sondage lorsque vous faites quelque chose comme l'envoi de la demande par seconde utilisation d'Internet de l'utilisateur sera plus parce que chaque utilisateur de connexion payer (cela signifie que l'utilisateur lâche Mb), mais dans le long utilisateur du scrutin ne paiera que juste pour les nouveaux messages .

  

Websocket est vraiment une bonne chose, mais quand vous l'utilisez, vous devriez penser à un gros problème que beaucoup de gens ne peuvent pas utiliser le chat sistem parce Websocket est juste pour une nouvelle version des navigateurs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top