Skip to content

Commit e8162a1

Browse files
committed
Conflicts fixed on "WebSocket" page in french language
1 parent e9ae8ed commit e8162a1

File tree

1 file changed

+1
-64
lines changed

1 file changed

+1
-64
lines changed

5-network/11-websocket/article.md

Lines changed: 1 addition & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
# WebSocket
22

3-
<<<<<<< HEAD
43
Le protocole `WebSocket`, décrit dans la spécification [RFC 6455](https://datatracker.ietf.org/doc/html/rfc6455) fournit un moyen d'échanger des données entre le navigateur et le serveur via une connexion persistante. Les données peuvent être transmises dans les deux sens sous forme de "paquets", sans interrompre la connexion et de requêtes HTTP supplémentaires.
5-
=======
6-
The `WebSocket` protocol, described in the specification [RFC 6455](https://datatracker.ietf.org/doc/html/rfc6455), provides a way to exchange data between browser and server via a persistent connection. The data can be passed in both directions as "packets", without breaking the connection and the need of additional HTTP-requests.
7-
>>>>>>> bf7d8bb1af3b416d393af1c15b03cb1352da1f9c
84

95
WebSocket est particulièrement adapté aux services qui nécessitent un échange de données continu, par exemple jeux en ligne, systèmes de trading en temps réel, etc.
106

@@ -23,11 +19,7 @@ Le protocole `wss://` est non seulement chiffré, mais également plus fiable.
2319

2420
C'est parce que les données `ws://` ne sont pas chiffrées, par conséquent visibles pour tout intermédiaire. Les anciens serveurs proxy ne connaissent pas WebSocket, ils peuvent voir des en-têtes "étranges" et abandonner la connexion.
2521

26-
<<<<<<< HEAD
2722
D'un autre côté, `wss://` est WebSocket sur TLS, (comme HTTPS est HTTP sur TLS), la couche de sécurité de transport chiffre les données à l'expéditeur et déchiffre au récepteur. Les paquets de données sont donc transmis chiffrés via des proxys. Ils ne peuvent pas voir ce qu'il y a à l'intérieur et les laisser passer.
28-
=======
29-
On the other hand, `wss://` is WebSocket over TLS, (same as HTTPS is HTTP over TLS), the transport security layer encrypts the data at the sender and decrypts it at the receiver. So data packets are passed encrypted through proxies. They can't see what's inside and let them through.
30-
>>>>>>> bf7d8bb1af3b416d393af1c15b03cb1352da1f9c
3123
```
3224
3325
Une fois le socket créé, nous devons écouter les événements qu'il contient. Il y a au total 4 événements :
@@ -80,19 +72,11 @@ Approfondissont maintenant.
8072

8173
Lorsque `new WebSocket(url)` est créé, il se connecte immédiatement.
8274

83-
<<<<<<< HEAD
8475
Lors de la connexion, le navigateur (à l'aide des en-têtes) demande au serveur: "Prenez-vous en charge Websocket ?" Et si le serveur répond "oui", alors la conversation se poursuit dans le protocole WebSocket, qui n'est pas du tout HTTP.
8576

8677
![](websocket-handshake.svg)
8778

8879
Voici un exemple d'en-têtes de navigateur pour une demande faite par `new WebSocket("wss://javascript.info/chat")`.
89-
=======
90-
During the connection, the browser (using headers) asks the server: "Do you support Websocket?" And if the server replies "yes", then the talk continues in WebSocket protocol, which is not HTTP at all.
91-
92-
![](websocket-handshake.svg)
93-
94-
Here's an example of browser headers for a request made by `new WebSocket("wss://javascript.info/chat")`.
95-
>>>>>>> bf7d8bb1af3b416d393af1c15b03cb1352da1f9c
9680

9781
```
9882
GET /chat
@@ -104,19 +88,11 @@ Sec-WebSocket-Key: Iv8io/9s+lYFgZWcXczP8Q==
10488
Sec-WebSocket-Version: 13
10589
```
10690

107-
<<<<<<< HEAD
10891
- `Origin` -- l'origine de la page client, par exemple `https://javascript.info`. Les objets WebSocket sont cross-origin par nature. Il n'y a pas d'en-têtes spéciaux ou d'autres limitations. Les anciens serveurs ne sont pas en mesure de gérer WebSocket de toute façon, il n'y a donc pas de problème de compatibilité. Mais l'en-tête `Origin` est important, car il permet au serveur de décider de discuter ou non en WebSocket avec ce site Web.
10992
- `Connection: Upgrade` -- indique que le client souhaite modifier le protocole.
11093
- `Upgrade: websocket` -- le protocole demandé est "websocket".
11194
- `Sec-WebSocket-Key` -- une clé générée aléatoirement par le navigateur pour la sécurité.
11295
- `Sec-WebSocket-Version` -- Version du protocole WebSocket, 13 est la version actuelle.
113-
=======
114-
- `Origin` -- the origin of the client page, e.g. `https://javascript.info`. WebSocket objects are cross-origin by nature. There are no special headers or other limitations. Old servers are unable to handle WebSocket anyway, so there are no compatibility issues. But the `Origin` header is important, as it allows the server to decide whether or not to talk WebSocket with this website.
115-
- `Connection: Upgrade` -- signals that the client would like to change the protocol.
116-
- `Upgrade: websocket` -- the requested protocol is "websocket".
117-
- `Sec-WebSocket-Key` -- a random browser-generated key, used to ensure that the server supports WebSocket protocol. It's random to prevent proxies from caching any following communication.
118-
- `Sec-WebSocket-Version` -- WebSocket protocol version, 13 is the current one.
119-
>>>>>>> bf7d8bb1af3b416d393af1c15b03cb1352da1f9c
12096

12197
```smart header="Le handshake WebSocket ne peut pas être émulé"
12298
Nous ne pouvons pas utiliser `XMLHttpRequest` ou` fetch` pour effectuer ce type de requête HTTP, car JavaScript n'est pas autorisé à définir ces en-têtes.
@@ -131,31 +107,19 @@ Connection: Upgrade
131107
Sec-WebSocket-Accept: hsBlbuDTkk24srzEOTBUlZAlC2g=
132108
```
133109

134-
<<<<<<< HEAD
135-
Ici `Sec-WebSocket-Accept` est `Sec-WebSocket-Key`, recodé à l'aide d'un algorithme spécial. Le navigateur l'utilise pour s'assurer que la réponse correspond à la requête.
110+
Ici `Sec-WebSocket-Accept` est `Sec-WebSocket-Key`, recodé à l'aide d'un algorithme spécial. En le voyant, le navigateur comprend que le serveur prend réellement en charge le protocole WebSocket.
136111

137112
Ensuite, les données sont transférées en utilisant le protocole WebSocket, nous verrons bientôt sa structure ("frames"). Et ce n'est pas du tout HTTP.
138-
=======
139-
Here `Sec-WebSocket-Accept` is `Sec-WebSocket-Key`, recoded using a special algorithm. Upon seeing it, the browser understands that the server really does support the WebSocket protocol.
140-
141-
Afterwards, the data is transferred using the WebSocket protocol, we'll see its structure ("frames") soon. And that's not HTTP at all.
142-
>>>>>>> bf7d8bb1af3b416d393af1c15b03cb1352da1f9c
143113

144114
### Extensions et sous-protocoles
145115

146116
Il peut y avoir des en-têtes supplémentaires `Sec-WebSocket-Extensions` et `Sec-WebSocket-Protocol` qui décrivent les extensions et les sous-protocoles.
147117

148118
Par exemple :
149119

150-
<<<<<<< HEAD
151120
- `Sec-WebSocket-Extensions: deflate-frame` signifie que le navigateur prend en charge la compression des données. Une extension est liée au transfert des données, c'est une fonctionnalité qui étend le protocole WebSocket. L'en-tête `Sec-WebSocket-Extensions` est envoyé automatiquement par le navigateur, avec la liste de toutes les extensions qu'il prend en charge.
152121

153122
- `Sec-WebSocket-Protocol: soap, wamp` signifie que nous aimerions transférer non seulement toutes les données, mais les données [SOAP](http://en.wikipedia.org/wiki/SOAP) ou les protocoles WAMP ("The WebSocket Application Messaging Protocol"). Les sous-protocoles WebSocket sont enregistrés dans le [catalogue IANA](http://www.iana.org/assignments/websocket/websocket.xml). Donc, cet en-tête décrit les formats de données que nous allons utiliser.
154-
=======
155-
- `Sec-WebSocket-Extensions: deflate-frame` means that the browser supports data compression. An extension is something related to transferring the data, functionality that extends the WebSocket protocol. The header `Sec-WebSocket-Extensions` is sent automatically by the browser, with the list of all extensions it supports.
156-
157-
- `Sec-WebSocket-Protocol: soap, wamp` means that we'd like to transfer not just any data, but the data in [SOAP](https://en.wikipedia.org/wiki/SOAP) or WAMP ("The WebSocket Application Messaging Protocol") protocols. WebSocket subprotocols are registered in the [IANA catalogue](https://www.iana.org/assignments/websocket/websocket.xml). So, this header describes the data formats that we're going to use.
158-
>>>>>>> bf7d8bb1af3b416d393af1c15b03cb1352da1f9c
159123

160124
Cet en-tête facultatif est défini à l'aide du deuxième paramètre de `new WebSocket`. C'est le tableau des sous-protocoles, par exemple si nous souhaitons utiliser SOAP ou WAMP :
161125

@@ -209,11 +173,7 @@ Dans le navigateur, nous travaillons directement uniquement avec du texte ou des
209173
210174
**La méthode WebSocket `.send()` peut envoyer du texte ou des données binaires.**
211175
212-
<<<<<<< HEAD
213176
Un appel `socket.send(body)` autorise `body` dans une chaîne de caractères ou un format binaire, y compris `Blob`, `ArrayBuffer`, etc. Aucun paramètre requis : il suffit de l'envoyer dans n'importe quel format.
214-
=======
215-
A call `socket.send(body)` allows `body` in string or a binary format, including `Blob`, `ArrayBuffer`, etc. No settings are required: just send it out in any format.
216-
>>>>>>> bf7d8bb1af3b416d393af1c15b03cb1352da1f9c
217177
218178
**Lorsque nous recevons les données, le texte vient toujours sous forme de chaîne de caractères. Et pour les données binaires, nous pouvons choisir entre les formats `Blob` et `ArrayBuffer`.**
219179
@@ -261,11 +221,7 @@ socket.close([code], [reason]);
261221
- `code` est un code de fermeture WebSocket spécial (facultatif)
262222
- `reason` est une chaîne de caractères qui décrit la raison de la fermeture (facultatif)
263223

264-
<<<<<<< HEAD
265224
Ensuite, l'autre partie du gestionnaire d'événements `close` obtient le code et la raison, par exemple :
266-
=======
267-
Then the other party in the `close` event handler gets the code and the reason, e.g.:
268-
>>>>>>> bf7d8bb1af3b416d393af1c15b03cb1352da1f9c
269225

270226
```js
271227
// partie fermante :
@@ -293,11 +249,7 @@ Il existe d'autres codes comme :
293249

294250
La liste complète se trouve dans le [RFC6455, §7.4.1](https://tools.ietf.org/html/rfc6455#section-7.4.1).
295251

296-
<<<<<<< HEAD
297252
Les codes WebSocket sont un peu comme les codes HTTP, mais différents. En particulier, tous les codes inférieurs à `1000` sont réservés, il y aura une erreur si nous essayons de définir un tel code.
298-
=======
299-
WebSocket codes are somewhat like HTTP codes, but different. In particular, codes lower than `1000` are reserved, there'll be an error if we try to set such a code.
300-
>>>>>>> bf7d8bb1af3b416d393af1c15b03cb1352da1f9c
301253

302254
```js
303255
// en cas de rupture de connexion
@@ -368,17 +320,10 @@ Le code côté serveur dépasse un peu notre portée. Ici, nous utiliserons Node
368320
369321
L'algorithme côté serveur sera :
370322

371-
<<<<<<< HEAD
372323
1. Créer `clients = new Set()` -- un ensemble de sockets.
373324
2. Pour chaque websocket accepté, l'ajouter à l'ensemble `clients.add (socket)` et configurer l'écouteur d'événements `message` pour obtenir ses messages.
374325
3. Lorsqu'un message est reçu : parcourir les clients et l'envoyer à tout le monde.
375326
4. Lorsqu'une connexion est fermée : `clients.delete(socket)`.
376-
=======
377-
1. Create `clients = new Set()` -- a set of sockets.
378-
2. For each accepted websocket, add it to the set `clients.add(socket)` and set `message` event listener to get its messages.
379-
3. When a message is received: iterate over clients and send it to everyone.
380-
4. When a connection is closed: `clients.delete(socket)`.
381-
>>>>>>> bf7d8bb1af3b416d393af1c15b03cb1352da1f9c
382327
383328
```js
384329
const ws = new require('ws');
@@ -414,11 +359,7 @@ Voici l'exemple fonctionnel :
414359

415360
[iframe src="chat" height="100" zip]
416361

417-
<<<<<<< HEAD
418362
Vous pouvez également le télécharger (bouton en haut à droite dans l'iframe) et l'exécuter localement. N'oubliez pas d'installer [Node.js](https://nodejs.org/en/) et `npm install ws` avant l'exécution.
419-
=======
420-
You can also download it (upper-right button in the iframe) and run it locally. Just don't forget to install [Node.js](https://nodejs.org/en/) and `npm install ws` before running.
421-
>>>>>>> bf7d8bb1af3b416d393af1c15b03cb1352da1f9c
422363

423364
## Résumé
424365

@@ -442,10 +383,6 @@ Les événements :
442383
443384
WebSocket ne comprend pas à lui seul la reconnexion, l'authentification et de nombreux autres mécanismes de haut niveau. Il existe donc des bibliothèques client / serveur pour cela, et il est également possible d'implémenter ces capacités manuellement.
444385
445-
<<<<<<< HEAD
446386
Parfois, pour intégrer WebSocket dans un projet existant, les gens exécutent le serveur WebSocket en parallèle avec le serveur HTTP principal et partagent une seule base de données. Les requêtes à WebSocket utilisent `wss://ws.site.com`, un sous-domaine qui mène au serveur WebSocket, tandis que` https://site.com` va au serveur HTTP principal.
447-
=======
448-
Sometimes, to integrate WebSocket into existing projects, people run a WebSocket server in parallel with the main HTTP-server, and they share a single database. Requests to WebSocket use `wss://ws.site.com`, a subdomain that leads to the WebSocket server, while `https://site.com` goes to the main HTTP-server.
449-
>>>>>>> bf7d8bb1af3b416d393af1c15b03cb1352da1f9c
450387
451388
Certes, d'autres modes d'intégration sont également possibles.

0 commit comments

Comments
 (0)