WebSockets avec Node · 2016. 6. 2. · Connexion ouverte Handshake Qu’est-ce que les WebSockets...

Preview:

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/