websockets avec node · 2016. 6. 2. · connexion ouverte handshake qu’est-ce que les websockets...
TRANSCRIPT
![Page 1: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/1.jpg)
WebSockets avec Node.js
Martin Jordan Menubarbe Sylvio Paturaux Florian
![Page 2: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/2.jpg)
SOMMAIRE 2
Qu’est-ce que les WebSockets ?
Quelques bibliothèques
Comparaison
Démonstration
![Page 3: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/3.jpg)
Connexion ouverte
Handshake
Qu’est-ce que les WebSockets ? 3
Messages Bi-directionnels
Fermeture du canal
Client Serveur
Connexion ouverte et persistante
Connexion fermée
Protocole réseau : couche application
Full-duplex
Sécurisé SSL possible
Implémentation basique dans Node.js
Standardisé RFC 6455
Actuellement version 13
![Page 4: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/4.jpg)
Compatibilités entre navigateurs
4Qu’est-ce que les WebSockets ?
![Page 5: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/5.jpg)
Permettent une utilisation plus facile des WebSockets
Couche d’abstraction, nouvelles fonctionnalités, adaptation client, …
5Les bibliothèques
Présentation des bibliothèques les plus intéressantes
![Page 6: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/6.jpg)
6WS version 1.1
Module implémentant simplement la RFC 6455
Très rapide, car n’utilise pas de surcouche
Difficile d’utilisation
![Page 7: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/7.jpg)
Langage C++
Compilé comme module V8
Performances
40% moins de mémoire que ws
10% plus rapide que ws
Compatible OS X, Linux et Microsoft
7µWebSockets
![Page 8: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/8.jpg)
Utilise les WebSockets et d’autres protocoles temps réels
Surcouche avec les fonctionnalités
Namespace, Room, liste clients
Utilisé dans
Microsoft Office, Yammer, Zendesk, Trello
8Socket.io version 1.4.5
![Page 9: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/9.jpg)
9Engine.io version 1.6.8
API côté serveur et client
Gestion des Fallback
Possibilité de changer de moteur WebSocket
Socket.io utilise Engine.io qui utilise lui-même ws
WebSocket
FlashSocket
XHR Polling
JSonP Polling
Fallback
![Page 10: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/10.jpg)
Basé uniquement sur le long polling
Mise en place simple du load balancing
Fonctionne pour la très majeur partie des navigateurs
Propose une implémentation côté client
10Browser Chanel version 2.0
![Page 11: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/11.jpg)
Bibliothèque de haut niveau
Encapsule des Frameworks de transport temps-réels :
11Primus
Détection et des déconnexion-reconnexion
Changement de type de transport de données simplifié
Encodage/decodage binaire simples
• BrowserChannel
• Engine.IO
• Faye
• Lws
• uws
• SockJS
• ws
![Page 12: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/12.jpg)
12Comparaison
Etude datant de 2014
![Page 13: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/13.jpg)
13Démonstration
![Page 14: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/14.jpg)
14Conclusion
Autres bibliothèques
SockJS, Faye
WS et µWS Performances
BrowserChannel Long Polling
Socket.io FallBack et groupes de clients
Primus Simple, stable et haut niveau
![Page 15: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/15.jpg)
Merci
Martin Jordan Menubarbe Sylvio Paturaux Florian
![Page 16: WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets ? 3 Messages Bi-directionnels Fermeture du canal Client Serveur Connexion ouverte](https://reader035.vdocuments.site/reader035/viewer/2022063013/5fcb66de9340bc765c476820/html5/thumbnails/16.jpg)
Références Spec. : https://www.w3.org/TR/websockets/
RFC 6455 : https://tools.ietf.org/html/rfc6455
Comparaison performances : https://medium.com/@denizozger/finding-the-right-node-js-websocket-
implementation-b63bfca0539#.rurinahb7
Google browserchannel : http://google.github.io/closure-library/api/class_goog_net_BrowserChannel.html
Compatibilités : http://caniuse.com/#feat=websockets
Package : https://www.npmjs.com/package/
LWS : https://libwebsockets.org/
Engine.IO : https://github.com/socketio/engine.io-protocol, http://www.devthought.com/2012/07/07/the-
realtime-engine/
Browser Channel : https://github.com/josephg/node-browserchannel,
http://thegeez.net/2012/04/03/why_browserchannel.html
Primus : https://github.com/primus/primus
Démo : http://tanker.jordan-martin.fr/