Skip to content

Commit 11decc3

Browse files
authored
Merge pull request #154 from HachemiH/master
Long polling
2 parents 5de9f88 + 5dd91a8 commit 11decc3

File tree

1 file changed

+43
-43
lines changed

1 file changed

+43
-43
lines changed
Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,96 @@
1-
# Long polling
1+
# L'interrogation longue
22

3-
Long polling is the simplest way of having persistent connection with server, that doesn't use any specific protocol like WebSocket or Server Side Events.
3+
L'interrogation longue est le moyen le plus simple d'avoir une connexion persistante avec le serveur, qui n'utilise aucun protocole spécifique comme WebSocket ou Server Side Events.
44

5-
Being very easy to implement, it's also good enough in a lot of cases.
5+
Étant très facile à mettre en œuvre, elle est également assez bonne dans de nombreux cas.
66

7-
## Regular Polling
7+
## Interrogation régulière
88

9-
The simplest way to get new information from the server is periodic polling. That is, regular requests to the server: "Hello, I'm here, do you have any information for me?". For example, once in 10 seconds.
9+
Le moyen le plus simple d'obtenir de nouvelles informations du serveur est l'interrogation périodique. Autrement dit, des requêtes régulières au serveur : "Bonjour, je suis là, avez-vous des informations pour moi ?". Par exemple, une fois toutes les 10 secondes.
1010

11-
In response, the server first takes a notice to itself that the client is online, and second - sends a packet of messages it got till that moment.
11+
En réponse, le serveur se signale d'abord à lui-même que le client est en ligne, et deuxièmement - envoie un paquet de messages qu'il a reçu jusqu'à ce moment.
1212

13-
That works, but there are downsides:
14-
1. Messages are passed with a delay up to 10 seconds (between requests).
15-
2. Even if there are no messages, the server is bombed with requests every 10 seconds, even if the user switched somewhere else or is asleep. That's quite a load to handle, speaking performance-wise.
13+
Cela fonctionne, mais il y a des inconvénients :
14+
1. Les messages sont transmis avec un délai allant jusqu'à 10 secondes (entre les requêtes).
15+
2. Même s'il n'y a pas de messages, le serveur est bombardé de requêtes toutes les 10 secondes, même si l'utilisateur est passé ailleurs ou est endormi. C'est une charge à gérer, en termes de performances.
1616

17-
So, if we're talking about a very small service, the approach may be viable, but generally, it needs an improvement.
17+
Donc, si nous parlons d'un très petit service, l'approche peut être viable, mais en général, elle doit être améliorée.
1818

19-
## Long polling
19+
## Interrogation longue
2020

21-
So-called "long polling" is a much better way to poll the server.
21+
"L'interrogation longue" est une bien meilleure façon d'interroger le serveur.
2222

23-
It's also very easy to implement, and delivers messages without delays.
23+
Elle est également très facile à mettre en œuvre et délivre des messages sans délai.
2424

25-
The flow:
25+
Le flux :
2626

27-
1. A request is sent to the server.
28-
2. The server doesn't close the connection until it has a message to send.
29-
3. When a message appears - the server responds to the request with it.
30-
4. The browser makes a new request immediately.
27+
1. Une requête est envoyée au serveur.
28+
2. Le serveur ne ferme pas la connexion tant qu'il n'a pas de message à envoyer.
29+
3. Lorsqu'un message apparaît - le serveur répond à la requête avec lui.
30+
4. Le navigateur fait immédiatement une nouvelle requête.
3131

32-
The situation when the browser sent a request and has a pending connection with the server, is standard for this method. Only when a message is delivered, the connection is reestablished.
32+
Lorsque le navigateur a envoyé une demande et a une connexion en attente avec le serveur est une situation relativement courante pour cette méthode. Ce n'est que lorsqu'un message est remis que la connexion est rétablie.
3333

3434
![](long-polling.svg)
3535

36-
If the connection is lost, because of, say, a network error, the browser immediately sends a new request.
36+
Si la connexion est perdue, en raison, par exemple, d'une erreur de réseau, le navigateur envoie immédiatement une nouvelle demande.
3737

38-
A sketch of client-side `subscribe` function that makes long requests:
38+
Une esquisse de la fonction `subscribe` côté client qui fait de longues requêtes :
3939

4040
```js
4141
async function subscribe() {
4242
let response = await fetch("/subscribe");
4343

4444
if (response.status == 502) {
45-
// Status 502 is a connection timeout error,
46-
// may happen when the connection was pending for too long,
47-
// and the remote server or a proxy closed it
48-
// let's reconnect
45+
// Le statut 502 est une erreur de dépassement de délai de connexion,
46+
// peut se produire lorsque la connexion est en attente depuis trop longtemps,
47+
// et le serveur distant ou un proxy l'a fermé
48+
// reconnectons-nous
4949
await subscribe();
5050
} else if (response.status != 200) {
51-
// An error - let's show it
51+
// Une erreur - affichons-la
5252
showMessage(response.statusText);
53-
// Reconnect in one second
53+
// Reconnexion en une seconde
5454
await new Promise(resolve => setTimeout(resolve, 1000));
5555
await subscribe();
5656
} else {
57-
// Get and show the message
57+
// Obtenons et affichons le message
5858
let message = await response.text();
5959
showMessage(message);
60-
// Call subscribe() again to get the next message
60+
// Appelons à nouveau subscribe() pour recevoir le message suivant
6161
await subscribe();
6262
}
6363
}
6464

6565
subscribe();
6666
```
6767

68-
As you can see, `subscribe` function makes a fetch, then waits for the response, handles it and calls itself again.
68+
Comme vous pouvez le voir, la fonction `subscribe` effectue une extraction, puis attend la réponse, la gère et se rappelle.
6969

70-
```warn header="Server should be ok with many pending connections"
71-
The server architecture must be able to work with many pending connections.
70+
```warn header="Le serveur devrait être ok avec de nombreuses connexions en attente"
71+
L'architecture du serveur doit pouvoir fonctionner avec de nombreuses connexions en attente.
7272
73-
Certain server architectures run a process per connect. For many connections there will be as many processes, and each process takes a lot of memory. So many connections just consume it all.
73+
Certaines architectures de serveur exécutent un processus par connexion. Pour de nombreuses connexions, il y aura autant de processus, et chaque processus prend beaucoup de mémoire. Autant de connexions risquent de consommer toutes ressources.
7474
75-
That's often the case for backends written in PHP, Ruby languages, but technically isn't a language, but rather implementation issue. Most modern language allow to implement a proper backend, but some of them make it easier than the other.
75+
C'est souvent le cas pour les backends écrits en PHP, en Ruby, mais techniquement ce n'est pas un problème de langage, mais plutôt d'implémentation. La plupart des langages modernes permettent d'implémenter un backend approprié, mais certains le rendent plus facile que l'autre.
7676
77-
Backends written using Node.js usually don't have such problems.
77+
Les backends écrits en utilisant Node.js n'ont généralement pas ce genre de problèmes.
7878
```
7979

80-
## Demo: a chat
80+
## Démo: un tchat
8181

82-
Here's a demo chat, you can also download it and run locally (if you're familiar with Node.js and can install modules):
82+
Voici un tchat de démonstration, vous pouvez également le télécharger et l'exécuter localement (si vous connaissez Node.js et pouvez installer des modules) :
8383

8484
[codetabs src="longpoll" height=500]
8585

86-
Browser code is in `browser.js`.
86+
Le code du navigateur est dans `browser.js`.
8787

88-
## Area of usage
88+
## Zone d'utilisation
8989

90-
Long polling works great in situations when messages are rare.
90+
L'interrogation longue fonctionne très bien dans les situations où les messages sont rares.
9191

92-
If messages come very often, then the chart of requesting-receiving messages, painted above, becomes saw-like.
92+
Si les messages arrivent très souvent, alors le tableau des messages de demande de réception, schématisé ci-dessus, ressemble à une scie.
9393

94-
Every message is a separate request, supplied with headers, authentication overhead, and so on.
94+
Chaque message est une requête distincte, fournie avec des en-têtes, une surcharge d'authentification, etc.
9595

96-
So, in this case, another method is preferred, such as [Websocket](info:websocket) or [Server Sent Events](info:server-sent-events).
96+
Donc, dans ce cas, une autre méthode est préférée, comme [Websocket](info:websocket) ou [Événements envoyés par le serveur](info:server-sent-events).

0 commit comments

Comments
 (0)