Qu'est-ce que l'interrogation longue ?
Le polling long est utilisé dans les applications web en temps réel pour assurer une communication quasi instantanée entre le client et le serveur web. Elle est particulièrement utile dans les applications de chat et de messagerie où les mises à jour en temps réel sont cruciales.
Dans la communication HTTP traditionnelle, le client envoie une nouvelle demande au serveur et attend une réponse. C'est ce que l'on appelle l'interrogation courte. Cependant, dans les scénarios en temps réel, l'interrogation courte peut ne pas être efficace car elle nécessite des demandes fréquentes au serveur, ce qui entraîne une surcharge inutile du réseau et une augmentation de la latence.
En revanche, l'interrogation longue améliore l'efficacité en maintenant la demande ouverte pendant une période prolongée jusqu'à ce que de nouvelles données soient disponibles. Le serveur maintient la requête ouverte et attend d'avoir de nouvelles informations à renvoyer au client. Une fois que le serveur dispose de nouvelles données, il répond au client, qui peut alors traiter les données et lancer une nouvelle demande d'interrogation longue.
En maintenant une connexion de longue durée entre le client et le serveur, l'interrogation longue réduit le nombre de requêtes, minimise la latence et améliore la communication en temps réel. Il est donc idéal dans les cas d'utilisation qui nécessitent une technique efficace pour créer des applications de chat et de messagerie évolutives et réactives, ainsi que d'autres applications qui utilisent des données en temps réel, comme les jeux.
Comment fonctionne l'interrogation longue ?
L'interrogation longue est une technique utilisée dans la communication en temps réel pour obtenir une livraison quasi instantanée des messages entre les clients et les serveurs. Elle est particulièrement utile dans la construction d'applications de chat et de messagerie où une faible latence et des mises à jour en temps réel sont cruciales.
Traditionnellement, les navigateurs web utilisent une approche basée sur l'extraction pour récupérer les données des serveurs. Le client envoie une requête au serveur, qui répond avec les données demandées. Cette approche, connue sous le nom de polling court, peut créer des retards dans la communication car le client doit envoyer des requêtes pour vérifier les mises à jour de manière répétée.
En revanche, la polling longue est une approche basée sur le push qui permet au serveur d'envoyer des mises à jour au client dès qu'elles sont disponibles. Voici comment cela fonctionne :
Le client envoie une demande au serveur, généralement par le biais d'une requête HTTP.
Au lieu de répondre immédiatement, le serveur maintient la demande ouverte, gardant la connexion active.
Si aucune nouvelle donnée n'est disponible, le serveur attend d'avoir quelque chose à renvoyer.
Lorsque le serveur dispose de nouvelles données ou qu'un délai prédéfini s'écoule, il répond au client avec les informations les plus récentes.
Dès réception de la réponse, le client envoie immédiatement une autre demande au serveur pour maintenir la connexion.
Ce cycle d'envoi de requêtes et de réception de réponses se poursuit, garantissant des mises à jour en temps réel.
L'interrogation longue simule efficacement une connexion en temps réel entre le client et le serveur en maintenant le cycle demande-réponse ouvert pendant une période prolongée. Elle permet au serveur de transmettre les mises à jour au client dès qu'elles sont disponibles et évite au client d'avoir à vérifier les mises à jour à plusieurs reprises.
Quelles sont les technologies utilisées pour mettre en œuvre l'interrogation longue ?
L'interrogation longue est une technique qui permet d'établir une communication en temps réel entre un client et un serveur. Elle est couramment utilisée dans les applications de chat et de messagerie où les mises à jour instantanées sont cruciales. Plusieurs technologies peuvent être utilisées pour mettre en œuvre l'interrogation longue, chacune présentant des avantages et des inconvénients. Examinons quelques-unes des technologies couramment utilisées pour mettre en œuvre le polling long.
Il s'agit de l'approche la plus basique et la plus largement utilisée pour mettre en œuvre le polling de longue durée. Elle s'appuie sur le protocole HTTP pour établir et maintenir une connexion de longue durée entre le client et le serveur. Le client envoie une requête au serveur, qui la maintient ouverte jusqu'à ce que de nouvelles données soient disponibles ou qu'un certain délai soit atteint. Une fois les nouvelles données disponibles, le serveur répond avec les informations mises à jour, et le client envoie immédiatement une autre demande pour poursuivre le cycle. Cette approche est facile à mettre en œuvre et ne nécessite pas de technologies spéciales côté serveur.
WebSocket est un protocole de communication en duplex intégral qui permet une communication en temps réel entre le client et le serveur par le biais d'une connexion unique et durable. Il s'agit d'une alternative plus efficace et à faible latence aux longues interrogations. WebSocket permet un flux de données bidirectionnel, permettant au client et au serveur d'envoyer des messages de manière asynchrone. Il élimine le besoin de requêtes HTTP fréquentes et réduit la surcharge du réseau. WebSocket est bien adapté aux applications nécessitant des mises à jour instantanées et une interaction en temps réel.
Événements envoyés par le serveur (SSE) :
SSE est une technologie de communication unidirectionnelle qui permet au serveur d'envoyer des données au client par le biais d'une seule connexion HTTP de longue durée. Avec SSE, le serveur peut envoyer plusieurs mises à jour au client sans que ce dernier n'ait à faire des requêtes en permanence. Le serveur établit la connexion et envoie les données sous la forme d'une série d'événements. Le client reçoit ces événements et peut les traiter selon ses besoins.
Lors du choix d'une technologie pour la mise en œuvre de l'interrogation longue dans votre application, plusieurs facteurs doivent être pris en considération :
L'évolutivité : Assurez-vous que la technologie choisie peut gérer un grand nombre de connexions simultanées et s'adapter à l'augmentation du nombre d'utilisateurs. Les technologies WebSocket et SSE sont généralement plus évolutives que les techniques d'interrogation longue basées sur le protocole HTTP, car elles permettent une utilisation plus efficace des ressources du serveur.
Sécurité : Tenez compte des implications de la technologie choisie en matière de sécurité. WebSocket et SSE peuvent être sécurisés à l'aide de protocoles de cryptage tels que SSL/TLS, ce qui garantit la confidentialité et l'intégrité des données. L'interrogation longue basée sur HTTP peut également être sécurisée, mais peut nécessiter des mesures supplémentaires d'authentification et de contrôle d'accès.
Prise en charge des navigateurs : Vérifiez la compatibilité du navigateur avec la technologie choisie. WebSocket et SSE sont mieux pris en charge par les navigateurs que l'interrogation longue basée sur HTTP, qui peut nécessiter des techniques supplémentaires ou des options de repli pour les navigateurs plus anciens.
Complexité de la mise en œuvre : Évaluez la facilité de mise en œuvre et de maintenance de la technologie choisie. L'interrogation longue basée sur HTTP est relativement simple, tandis que WebSocket et SSE peuvent nécessiter des connaissances et une infrastructure plus avancées. Tenez compte du niveau d'expertise de votre équipe de développement et des ressources nécessaires à la mise en œuvre et à la maintenance de la technologie choisie.
Long polling et WebSockets
LeLong Polling et les WebSockets sont des techniques permettant d'établir une connexion en temps réel entre un client (tel qu'un navigateur web) et un serveur. Bien qu'elles aient un objectif similaire, elles présentent des différences significatives.
L'interrogation longue est une technique dans laquelle le client adresse une requête au serveur web, qui maintient la connexion ouverte jusqu'à ce qu'il ait de nouvelles données à renvoyer. Le serveur peut répondre immédiatement s'il dispose de nouvelles données ou attendre un délai spécifié avant d'envoyer une réponse vide. Dans les deux cas, une fois que le client a reçu la réponse, il adresse immédiatement une nouvelle demande au serveur pour établir une nouvelle connexion. Ce processus se répète continuellement, ce qui permet au serveur d'envoyer des mises à jour au client dès qu'elles sont disponibles.
D'autre part, les WebSockets fournissent un canal de communication bidirectionnel et persistant entre le client et le serveur. Contrairement à l'interrogation longue, où une nouvelle connexion est établie pour chaque demande, une connexion WebSocket est établie une fois et maintenue ouverte indéfiniment. Cela permet une communication en temps réel et à faible latence dans les deux sens. Le serveur peut envoyer des données au client à tout moment, et le client peut également envoyer des données au serveur sans attendre de réponse.
Similitudes entre le polling long et les Web Sockets :
1. Mises à jour en temps réel : La longue interrogation et les WebSockets permettent tous deux une communication en temps réel entre le serveur et le client, ce qui permet des mises à jour instantanées sans interrogation ni rafraîchissement continus.
2. Réduction de la charge du serveur : Les deux techniques minimisent les demandes inutiles en n'envoyant les données que lorsqu'elles sont disponibles, ce qui réduit la charge du serveur et améliore l'évolutivité.
3. Prise en charge d'un grand nombre de langages et de cadres de travail : De nombreux langages de programmation et frameworks populaires prennent en charge le long polling et les WebSockets, ce qui les rend accessibles aux développeurs de différents écosystèmes.
Différences entre le long polling et les WebSockets :
1. Latence: L'interrogation longue introduit une latence car il y a un délai entre l'envoi d'une réponse par le serveur et sa réception par le client. Les sockets Web fournissent une communication bidirectionnelle à faible latence, ce qui permet des capacités en temps réel plus rapides.
2. Consommation de ressources : Les longues interrogations nécessitent que le serveur maintienne des connexions ouvertes avec chaque client, ce qui peut entraîner une consommation de ressources et limiter le nombre de connexions simultanées. Les WebSockets, en revanche, utilisent une connexion persistante, ce qui réduit la consommation globale de ressources.
3. Évolutivité : La nécessité de maintenir les connexions ouvertes pendant une période prolongée peut poser des problèmes d'évolutivité horizontale du serveur. Grâce à leur connexion persistante, les WebSockets permettent une meilleure évolutivité car elles ne nécessitent pas de nombreuses connexions ouvertes.
Le polling long et les WebSockets offrent tous deux des mises à jour en temps réel et réduisent la charge du serveur, mais ils diffèrent en termes de latence, de consommation de ressources et d'évolutivité. Les sockets Web permettent une communication bidirectionnelle plus rapide avec une consommation de ressources réduite, ce qui les rend adaptés aux applications qui nécessitent une faible latence et une grande évolutivité. D'autre part, l'interrogation longue peut être une bonne alternative lorsque la faible latence n'est pas essentielle et que le nombre de connexions simultanées est relativement faible. Les développeurs doivent tenir compte de ces facteurs lorsqu'ils choisissent entre les deux techniques pour leurs applications de chat et de messagerie en temps réel.
Polling long et événements envoyés par le serveur (SSE)
LeSSE est similaire au polling long en termes de simplicité et de facilité de mise en œuvre, mais il offre un moyen plus efficace et plus standardisé de réaliser la communication entre le serveur et le client. Examinons quelques similitudes et différences supplémentaires entre les deux technologies.
Similitudes entre l'interrogation longue et l'ESS :
Mises à jour en temps réel : La longue interrogation et l'ESS permettent toutes deux une communication en temps réel entre le serveur et le client, ce qui permet des mises à jour instantanées sans interrogation ni rafraîchissement continus.
Réduction de la charge du serveur : Les deux techniques minimisent les requêtes inutiles en n'envoyant les données que lorsqu'elles sont disponibles, ce qui réduit la charge du serveur et améliore l'évolutivité.
Prise en charge d'un grand nombre de langages et de cadres de travail : De nombreux langages de programmation et frameworks populaires prennent en charge le long polling et le SSE, ce qui les rend accessibles aux développeurs de différents écosystèmes.
Différences entre le long polling et le SSE :
Latence : L'interrogation longue introduit une latence car il y a un délai entre l'envoi d'une réponse par le serveur et sa réception par le client. En revanche, l'ESS fournit un flux continu de données du serveur au client, ce qui réduit le temps de latence et améliore les capacités en temps réel.
Consommation de ressources : L'interrogation longue nécessite que le serveur maintienne des connexions ouvertes avec chaque client, ce qui peut entraîner une consommation de ressources et limiter le nombre de connexions simultanées. L'ESS, en revanche, utilise une seule connexion de longue durée, ce qui réduit la consommation globale de ressources.
Évolutivité : La nécessité de maintenir les connexions ouvertes pendant une longue période peut poser des problèmes d'évolutivité horizontale du serveur. Avec une seule connexion par client, SSE permet une meilleure évolutivité car il ne nécessite pas de nombreuses connexions ouvertes.
Comment optimiser l'interrogation longue ?
L'interrogation longue est utilisée dans les applications de chat et de messagerie en temps réel pour fournir des mises à jour quasi instantanées aux clients. Cependant, elle peut être gourmande en ressources et entraîner des problèmes d'évolutivité si elle n'est pas optimisée correctement. Voici plusieurs techniques qui peuvent être utilisées pour optimiser l'interrogation longue afin d'améliorer les performances et l'évolutivité.
Réponses groupées : Au lieu d'envoyer une réponse pour chaque demande, regroupez plusieurs mises à jour et envoyez-les dans une seule réponse. Cela permet de réduire le nombre de requêtes HTTP et de minimiser les frais généraux.
Compression : La compression des données avant leur envoi sur le réseau peut réduire de manière significative la taille de la charge utile, ce qui se traduit par une transmission plus rapide et une consommation moindre de la bande passante. Des techniques telles que la compression Gzip peuvent être utilisées à cette fin.
Mise en cache : la mise en œuvre d'une couche de mise en cache peut contribuer à réduire la charge de la base de données ou d'autres sources de données. En mettant en cache les données fréquemment demandées, les demandes ultérieures peuvent être servies à partir du cache lui-même, ce qui réduit le temps de réponse et améliore l'évolutivité.
Mise en commun des connexions : Le maintien d'un pool de connexions réutilisables au lieu de la création d'une nouvelle connexion pour chaque requête peut améliorer l'efficacité du mécanisme d'interrogation longue. Cela permet d'éliminer les frais généraux liés à l'établissement d'une nouvelle connexion pour chaque demande, ce qui se traduit par de meilleures performances.
Restriction et limitation du débit : La mise en œuvre de mécanismes d'étranglement et de limitation du débit peut empêcher les demandes excessives de submerger le serveur. Cela garantit une allocation équitable des ressources et évite les abus, ce qui améliore les performances et l'évolutivité.
Équilibrage de la charge: La répartition des demandes entrantes sur plusieurs serveurs à l'aide de techniques d'équilibrage de la charge permet de répartir la charge et d'éviter qu'un seul serveur ne soit submergé. Cela améliore les performances globales et l'évolutivité du système d'interrogation longue.
Surveillance et optimisation : Contrôler régulièrement les performances du système de sondage long et identifier les goulets d'étranglement ou les points à améliorer permet d'optimiser le système pour en améliorer les performances et l'évolutivité. Des techniques telles que le profilage, les tests de charge et l'optimisation des performances peuvent être utilisées pour identifier et résoudre les problèmes de performance.
Traitement asynchrone (Async) : Le transfert des tâches fastidieuses vers des processus asynchrones ou des travailleurs d'arrière-plan permet de libérer des ressources et d'améliorer la réactivité du système d'interrogation longue. Pour ce faire, vous pouvez utiliser des files d'attente de messages, des processus de travail ou l'informatique distribuée.
Délais de connexion : La mise en œuvre de délais de connexion appropriés permet d'éviter que les connexions inactives ne consomment des ressources inutiles. En fermant les connexions inactives après une certaine période d'inactivité, le système peut libérer des ressources pour d'autres clients et améliorer l'évolutivité.
Infrastructure évolutive : Il est essentiel de s'assurer que l'infrastructure sous-jacente est évolutive et qu'elle peut gérer la charge attendue pour optimiser le polling de longue durée. Cela peut impliquer l'utilisation de technologies telles que l'informatique en nuage, la mise à l'échelle automatique ou la conteneurisation pour allouer dynamiquement les ressources en fonction de la demande.
Quels sont les langages de programmation compatibles avec l'interrogation longue ?
Plusieurs langages de programmation sont compatibles avec la mise en œuvre de l'interrogation longue dans les applications de chat et de messagerie en temps réel. En voici quelques exemples :
JavaScript : Le polling long est couramment combiné avec JavaScript, ce qui permet une mise en œuvre transparente côté client. Les frameworks JavaScript tels que React, Angular et Vue.js fournissent des bibliothèques et des outils qui simplifient la mise en œuvre de l'interrogation longue dans votre application.
PHP : PHP est un langage côté serveur populaire souvent utilisé dans le développement web. Il fournit des fonctionnalités et des bibliothèques qui permettent aux développeurs de mettre en œuvre le long polling de manière efficace. Le framework PHP Laravel, par exemple, prend en charge le long polling grâce à son système de diffusion d'événements.
Python : Python est un autre langage polyvalent qui peut être utilisé pour mettre en œuvre le polling de longue durée. Les frameworks Python tels que Django et Flask fournissent les outils et les bibliothèques nécessaires à la création d'applications en temps réel utilisant des techniques de long polling.
Ruby : Ruby est un langage de programmation dynamique, orienté objet, bien adapté au développement web. Un cadre web populaire, Ruby on Rails, prend en charge le long polling par le biais de diverses bibliothèques et extensions.
Java : Java est un langage largement utilisé dans le développement des entreprises et prend en charge le long polling. Les cadres Java tels que Spring et Java EE proposent des bibliothèques et des outils pour la mise en œuvre du polling long dans les applications en temps réel.
.NET/C# : Le cadre .NET, avec son langage de programmation C#, est couramment utilisé pour créer des applications web. Il fournit des bibliothèques et des cadres tels que ASP.NET SignalR qui simplifient la mise en œuvre des techniques d'interrogation longue.
Il ne s'agit là que de quelques exemples de langages de programmation qui prennent en charge le long polling. De nombreux autres langages et frameworks peuvent également mettre en œuvre le polling long dans les applications de chat et de messagerie en temps réel.
Lors du choix d'un langage de programmation pour la mise en œuvre de l'interrogation longue, quelques facteurs doivent être pris en compte. Tout d'abord, tenez compte des exigences spécifiques de votre application et choisissez le langage qui répond le mieux à ces exigences. Prenez en compte l'évolutivité, les performances et la facilité de mise en œuvre sur le backend.
En outre, tenez compte de la communauté et de l'écosystème qui entourent le langage de programmation. Une communauté forte et active peut fournir un support, des tutoriels, de la documentation et des ressources pour faciliter l'implémentation de l'interrogation longue dans votre application.
Comment l'interrogation longue est-elle utilisée dans les applications en temps réel ?
L'un des principaux avantages du long polling est son efficacité à fournir des mises à jour en temps réel. La minimisation du nombre de requêtes envoyées par les clients réduit considérablement la latence du réseau et améliore les performances globales. En outre, elle permet aux serveurs d'envoyer immédiatement des mises à jour aux clients, garantissant ainsi que les messages et les notifications sont délivrés rapidement.
En outre, l'interrogation prolongée facilite l'extensibilité des applications en temps réel. La réduction du nombre de connexions ouvertes permet aux serveurs de gérer un plus grand nombre de clients simultanés. Cet aspect est particulièrement important dans les applications de chat et de messagerie, où le nombre d'utilisateurs fluctue constamment.
L'interrogation longue permet d'économiser les ressources du système. Dans le cadre d'une interrogation traditionnelle, chaque demande exige que le serveur la traite et y réponde, même en l'absence de mises à jour. Ce traitement constant peut peser sur les ressources du serveur et avoir un impact négatif sur les performances. En revanche, l'interrogation longue ne déclenche le traitement du serveur que lorsque de nouvelles données sont disponibles ou qu'un dépassement de délai se produit. Cela minimise la pression sur les ressources du système et permet d'améliorer l'évolutivité et la fiabilité.
Toutefois, la mise en œuvre de l'interrogation longue peut également poser certains problèmes. L'un d'entre eux consiste à gérer efficacement les ressources du serveur. Étant donné que l'interrogation longue implique de maintenir les connexions ouvertes pendant de longues périodes, la gestion de plusieurs connexions simultanées nécessite des ressources serveur importantes. Ce problème peut être résolu en utilisant des technologies telles que l'informatique en nuage, la mise à l'échelle automatique ou la conteneurisation pour allouer dynamiquement les ressources en fonction de la demande. En augmentant ou en réduisant automatiquement les ressources en fonction du nombre de connexions actives, les développeurs peuvent s'assurer que le serveur peut gérer efficacement la charge attendue.
Un autre défi consiste à gérer les dépassements de délai et les échecs de connexion. Dans le cas d'une interrogation longue, le serveur maintient la requête ouverte jusqu'à ce que de nouvelles données soient disponibles ou qu'un dépassement de délai se produise. Si un dépassement de délai se produit, le serveur doit le gérer avec élégance et fermer la connexion pour libérer des ressources. En outre, si une connexion échoue, le serveur doit être en mesure de la détecter et de gérer les tentatives de reconnexion de manière appropriée. En mettant en œuvre des mécanismes robustes de traitement des erreurs et de gestion des connexions, les développeurs peuvent garantir la fiabilité de l'interrogation longue dans les applications en temps réel.
La sécurité est un autre élément important à prendre en compte lors de la mise en œuvre de l'interrogation longue dans les applications en temps réel. Étant donné que le polling long implique le maintien de connexions persistantes entre les clients et les serveurs, il est crucial de sécuriser ces connexions pour protéger les données sensibles. La mise en œuvre des protocoles SSL (secure socket layers) ou TLS (transport layer security) permet de crypter les données transmises sur les connexions de polling long et d'empêcher l'écoute ou l'accès non autorisé.
Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par des pics de trafic. PubNub est parfait pour toute application nécessitant des données en temps réel.
Inscrivez-vous pour un essai gratuit et obtenez jusqu'à 200 MAUs ou 1M de transactions totales par mois inclus.
Comment PubNub peut-il vous aider ?
Cet article a été publié à l'origine sur PubNub.com
Notre plateforme aide les développeurs à construire, fournir et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.
La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.
Découvrez PubNub
Découvrez le Live Tour pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.
S'installer
Créez un compte PubNub pour un accès immédiat et gratuit aux clés PubNub.
Commencer
La documentation PubNub vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre SDK.
Top comments (0)