Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
WebSockets avec Node.js
Martin Jordan Menubarbe Sylvio Paturaux Florian
SOMMAIRE 2
Qu’est-ce que les WebSockets ?
Quelques bibliothèques
Comparaison
Démonstration
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
Compatibilités entre navigateurs
4Qu’est-ce que les WebSockets ?
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
6WS version 1.1
Module implémentant simplement la RFC 6455
Très rapide, car n’utilise pas de surcouche
Difficile d’utilisation
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
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
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
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
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
12Comparaison
Etude datant de 2014
13Démonstration
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
Merci
Martin Jordan Menubarbe Sylvio Paturaux Florian
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/