SlideShare una empresa de Scribd logo
1 de 27
REAL-TIME APPLICATIONS
JSR-356
Java API for WebSocket
Par : Ouadie LAHDIOUI
RFC-6455
WebSocket Protocol
Le : 29/10/2015
CE QUE VOUS VERREZ PENDANT CETTE PRÉSENTATION
SOMMAIRE
1
+ Les limitations du protocole HTTP 101
+ Les techniques de push de données
+ WebSocket - Kézako ?
+ La spécification IETF RFC 6455 « The WebSocket Protocol »
+ Le standard W3C « WebSocket JavaScript API »
+ JSR 356 « Java API for WebSocket »
+ Performances : WebSocket vs REST
+ Implémentations des WebSockets
+ Backend as service : La suite de la guerre du temps réel
+ Challenges d’une Application temps réel
+ Démonstration
FireBase, PubNub, Pusher et RethinkDB
Polling, Long-polling, Streaming, Comet, SSE(Server-Sent Events)
benchmark
Grizzly, Tomcat, Netty, Atmosphere, GlassFish, Tyrus Project et Jetty
HTTP pipelining et Keep Alive
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
1/4
LES LIMITATIONS DU PROTOCOLE HTTP 101
2
+ HTTP 101 = HTTP 1.0 et HTTP 1.1
+ Le HTTP 1.0 crée une connexion TCP pour chaque requête (page, image, etc …)
+ Le HTTP 1.1 des connexions persistantes pour obtenir les autres éléments de la page
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
connexion persistante (keepalive)
2/4
LES LIMITATIONS DU PROTOCOLE HTTP 101
2
+ Pipelining HTTP : une technique qui consistant à combiner plusieurs requêtes HTTP dans
une seule connexion TCP
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
3/4
LES LIMITATIONS DU PROTOCOLE HTTP 101
3
+ HTTP est un protocole sans état (stateless protocol) qui fonctionne sur le modèle
requête/réponse :
+ HTTP n’est pas optimisé pour les applications qui ont d’important besoins de
communication temps réel bi-directionnelle (duplex)
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
HTTP est unidirectionnel : Le server ne peut pas initier un transfert de données
4/4
LES LIMITATIONS DU PROTOCOLE HTTP
4
+ Half duplex :
Le client envoie une requête au serveur qui répond en lui renvoyant une réponse.
Le client doit attendre la réponse.
La transmission de données ne peut se faire que dans une direction en même temps.
+ Verbeux :
Chaque requête et réponse HTTP doit avoir des en-têtes (headers).
Ce qui augmente le trafic sur le réseau.
+ Il n'est pas possible d'utiliser un mode push de la part du serveur :
Le serveur envoie à son initiative des données au client.
+ HTTP a été conçu pour obtenir des éléments du web. Il répond à de nombreux besoins
mais il possède plusieurs inconvénients notamment pour une utilisation dans une
application web interactive :
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
1/5
LES TECHNIQUES DE PUSH DE DONNÉES
5
+ Plusieurs techniques ont été développées pour contourner les limitations du protocole
HTTP :
+ Polling :
Le client effectue périodiquement des requêtes synchrones au serveur pour obtenir des données.
Elle nécessite beaucoup de connexions selon la fréquence utilisée par le client.
Cette technique peut être intéressante si les données sont périodiquement modifiées côté
serveur.
+ Ajax Polling
+ JSONP Polling
+ Piggyback
+ …
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
2/5
LES TECHNIQUES DE PUSH DE DONNÉES
6
+ Long polling :
Le client ouvre une connexion et envoie une requête HTTP au serveur qui ne renvoie la réponse
que si un événement force l'envoi de données au client ou après un certain timeout.
Le nombre de requêtes/réponses peut ainsi être réduit sauf si le nombre d'événements est très
important.
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
3/5
LES TECHNIQUES DE PUSH DE DONNÉES
7
+ Streaming :
Le client envoie une requête au serveur qui maintient le flux de la réponse ouvert en y envoyant
des données au besoin.
Cette technique repose sur l’utilisation de connexion http persistantes.
Elle pose généralement des soucis avec certains éléments réseaux comme les firewalls ou les
proxys
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
4/5
LES TECHNIQUES DE PUSH DE DONNÉES
9
+ Reverse Ajax ou bien Comet:
Une technique combinant Ajax et long polling
Un concept dont le but est de permettre à un serveur d'envoyer à son initiative des données à un
navigateur.
Plusieurs techniques sont utilisées pour répondre au concept Comet :
+ Forever Iframes
+ Multi-part XMLHttpRequest
+ Hidden Iframes
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
5/5
LES TECHNIQUES DE PUSH DE DONNÉES
8
+ Server Side Event :
Un mécanisme de communication comparable à JMS : les clients s'inscrivent à un bus de
messages auprès du serveur, qui peut alors leur transmettre des données de manière
asynchrone via HTTP (= unidirectionnelle)
L'API SSE est normalisée dans le cadre de HTML5 par le W3C.
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
1/1
WEBSOCKET - KÉZAKO ?
10
+ Une technologie permet d'ouvrir une connexion bi-directionnelle permanente entre un
client et un serveur utilisant un canal en mode full duplex.
+ Permet le développement de véritables applications temps-réel performantes : application
de suivi des cours boursiers, ou des applications multi-utilisateurs (chat, jeux en ligne...).
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
1/1
COMPATIBILITÉ NAVIGATEUR
11Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
+ http://caniuse.com
12Source des images : kaazing.com
1/4 THE WEBSOCKET PROTOCOL
LA SPÉCIFICATION IETF RFC 6455
13
+ Le protocole WS permet l'échange de données entre un client et un serveur de manière
asynchrone, bidirectionnelle en mode full duplex utilisant une connections TCP
+ La spécification du protocole WebSocket est définie dans la RFC 6455, publiée en
décembre 2011 par Internet Engineering Task Force (IETF)
+ WS est :
+ basé sur 1 unique connexion TCP entre 2 peers
+ bi-directionnel : le client peut envoyer un message au serveur et le serveur peut envoyer
un message au client
+ full-duplex : le client peut envoyer plusieurs messages vers le serveur et le serveur vers le
client sans attendre de réponse l’un de l’autre
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
2/4 THE WEBSOCKET PROTOCOL
LA SPÉCIFICATION IETF RFC 6455
14
+ Le protocole WebSocket fonctionne en 2 phases : handshake et data transfer
+ HTTP half-duplex
+ WebSocket full-duplex
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
3/4 THE WEBSOCKET PROTOCOL
LA SPÉCIFICATION IETF RFC 6455
15
+ Handshake :
Unique échange requête/réponse HTTP entre l’initiateur de la connexion (peer client) et le peer serveur.
Cet échange HTTP utilise le mécanisme HTTP Upgrade
L’Upgrade HTTP permet au client de communiquer avec le serveur pour lui demander de changer de
protocole de communication
+ Requête HTTP Handshake
+ Réponse HTTP Handshake
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
4/4 THE WEBSOCKET PROTOCOL
LA SPÉCIFICATION IETF RFC 6455
17Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
+ Data transfer
Une fois le handshake acceptée, une gestion de callback est activée pour initier la communication
Les 2 peers s'échangent des messages dans une communication bi-directionnelle et full-duplex
WEBSOCKET JAVASCRIPT API
LE STANDARD W3C
18
+ Pour communiquer avec un serveur via le protocole WS, il est nécessaire d’utiliser une
API cliente en Javascript.
+ L’interface WebSocket propose des gestionnaires d'évènements pour s’adapter aux
méthodes du cycle de vie des WebSocket :
+ l’Event-Handler onopen est appelé lorsqu’une nouvelle connexion est initiée
+ l’Event-Handler onerror est appelé lorsqu’une erreur est reçue pendant la communication
+ l’Event-Handler onmessage est appelé lorsqu’un message est reçu
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
JAVAAPI FOR WEBSOCKET
JAVA SPECIFICATION REQUESTS 356
19
+ Le W3C définit comment utiliser WebSocket en Javascript, le Java Communitee Process
(JCP) fait de même pour le monde Java via la JSR 356
+ La spécification JSR 356 définit une API Java pour WebSocket qui propose :
+ La création d’un WebSocket Endpoint
+ L’utilisation l’approche par annotation Java ou par programmation
+ La possibilité d’envoyer et de consommer des messages en synchrone ou en asynchrone
+ La configuration et la gestion des sessions WebSocket (timeout, cookies…)
+ Une intégration dans Java EE Web Profile
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
JAVA SPECIFICATION REQUESTS 356
20
JAVAAPI FOR WEBSOCKET
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
1/1
PERFORMANCES : WEBSOCKET VS REST
21
+ Benchmark publié par Arun Gupta sur GitHub
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
1/1
IMPLÉMENTATIONS DES WEBSOCKETS
22
+ Plusieurs implémentations des WebSockets sont disponibles :
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
1/1 BACKEND AS SERVICE
LA SUITE DE LA GUERRE DU TEMPS RÉEL
23
+ Certaines solutions proposent du temps réel et le stockage de fichiers décentralisé sur
leur infrastructure :
+ Concept de « room » pour publier et retrouver les messages
+ BaaS : Backend as service
Real-Time applications avec la spécification Java pour les WebSockets (JSR 356) et le protocole WebSocket (RFC 6455)
PROXY, REVERS PROXY, FIREWALL, LOAD BALANCING…
CHALLENGES D’UNE APPLICATION TEMPS RÉEL
24Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
LIVRES
25
+ Java WebSocket Programming + The Definitive Guide to HTML5 WebSocket
Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
MERCI POUR VOTRE ATTENTION
Real-Time applications avec la spécification Java pour les WebSockets (JSR 356) et le protocole WebSocket (RFC 6455) 26
Références :
• Internet Engineering Task Force (IETF) RFC 6455: http://tools.ietf.org/html/rfc6455
• W3C The WebSocket API : http://www.w3.org/TR/websockets/
• Java Specification Requests 356 “Java API for WebSocket” : http://jcp.org/en/jsr/detail?id=356
• HTML5 Web Sockets Specification: http://dev.w3.org/html5/websockets/
• Server Sent Events : http://www.w3.org/TR/2011/WD-eventsource-20110208/

Más contenido relacionado

La actualidad más candente

Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5Mohamed Nemili
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express jsAbdoulaye Dieng
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptxEsokia
 
Html5 par Florent Garin, au Toulouse JUG
Html5 par Florent Garin, au Toulouse JUGHtml5 par Florent Garin, au Toulouse JUG
Html5 par Florent Garin, au Toulouse JUGJUG Toulouse
 
Programmation concurrente en Java
Programmation concurrente en JavaProgrammation concurrente en Java
Programmation concurrente en JavaFlorian Beaufumé
 
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorFlorian Beaufumé
 
Développer et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoftDévelopper et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoftLeTesteur
 
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute DisponibilitéAlphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute DisponibilitéAlphorm
 
Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Adyax
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejsnaholyr
 
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 20167 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016Sébastien Le Marchand
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005Eric D.
 
Automatisez votre gestion de MongoDB avec MMS
Automatisez votre gestion de MongoDB avec MMSAutomatisez votre gestion de MongoDB avec MMS
Automatisez votre gestion de MongoDB avec MMSMongoDB
 
Principes De Base De Asp .Net
Principes De Base De Asp .NetPrincipes De Base De Asp .Net
Principes De Base De Asp .NetGregory Renard
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007Eric D.
 
Alphorm.com Formation Active Directory 2016 : Le Guide complet de l'architecture
Alphorm.com Formation Active Directory 2016 : Le Guide complet de l'architectureAlphorm.com Formation Active Directory 2016 : Le Guide complet de l'architecture
Alphorm.com Formation Active Directory 2016 : Le Guide complet de l'architectureAlphorm
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 

La actualidad más candente (20)

Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
Symfony with angular.pptx
Symfony with angular.pptxSymfony with angular.pptx
Symfony with angular.pptx
 
Html5 par Florent Garin, au Toulouse JUG
Html5 par Florent Garin, au Toulouse JUGHtml5 par Florent Garin, au Toulouse JUG
Html5 par Florent Garin, au Toulouse JUG
 
EcmaScript
EcmaScriptEcmaScript
EcmaScript
 
Programmation concurrente en Java
Programmation concurrente en JavaProgrammation concurrente en Java
Programmation concurrente en Java
 
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateurAlphorm.com Formation Apache - Le Guide Complet de l'administrateur
Alphorm.com Formation Apache - Le Guide Complet de l'administrateur
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et Reactor
 
Développer et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoftDévelopper et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoft
 
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute DisponibilitéAlphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
 
Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejs
 
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 20167 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005
 
Automatisez votre gestion de MongoDB avec MMS
Automatisez votre gestion de MongoDB avec MMSAutomatisez votre gestion de MongoDB avec MMS
Automatisez votre gestion de MongoDB avec MMS
 
Principes De Base De Asp .Net
Principes De Base De Asp .NetPrincipes De Base De Asp .Net
Principes De Base De Asp .Net
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
 
Alphorm.com Formation Active Directory 2016 : Le Guide complet de l'architecture
Alphorm.com Formation Active Directory 2016 : Le Guide complet de l'architectureAlphorm.com Formation Active Directory 2016 : Le Guide complet de l'architecture
Alphorm.com Formation Active Directory 2016 : Le Guide complet de l'architecture
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 

Destacado

Apache camel et les entreprise integration patterns
Apache camel et les entreprise integration patternsApache camel et les entreprise integration patterns
Apache camel et les entreprise integration patternsOuadie LAHDIOUI
 
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre APIREST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre APIOuadie LAHDIOUI
 
Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the futureOuadie LAHDIOUI
 
Firebase presentation
Firebase presentationFirebase presentation
Firebase presentationConnor Leech
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)Yacine Rezgui
 
Introdução ao Firebase
Introdução ao FirebaseIntrodução ao Firebase
Introdução ao FirebaseJose Papo, MSc
 
Présentation du l'application Mobile "Passion Beauté 1.0"
Présentation du l'application Mobile "Passion Beauté 1.0"Présentation du l'application Mobile "Passion Beauté 1.0"
Présentation du l'application Mobile "Passion Beauté 1.0"Nazih Heni
 
Carte de voeux 2015 par Eliott&Markus
Carte de voeux 2015 par Eliott&MarkusCarte de voeux 2015 par Eliott&Markus
Carte de voeux 2015 par Eliott&MarkusEliott&Markus
 
Facteurs orientation
Facteurs orientationFacteurs orientation
Facteurs orientationclodo38
 
Campagne presidentielle
Campagne presidentielleCampagne presidentielle
Campagne presidentielleparisraddicts
 
En savoir plus sur Yves Doyon & Assoc
En savoir plus sur Yves Doyon & AssocEn savoir plus sur Yves Doyon & Assoc
En savoir plus sur Yves Doyon & AssocYves Doyon
 
Manual bosch congelador integrable gid14 a20
Manual bosch   congelador integrable gid14 a20Manual bosch   congelador integrable gid14 a20
Manual bosch congelador integrable gid14 a20Alsako Electrodomésticos
 
Enquête Hiscox 2015, ADN d'un entrepreneur
Enquête Hiscox 2015, ADN d'un entrepreneurEnquête Hiscox 2015, ADN d'un entrepreneur
Enquête Hiscox 2015, ADN d'un entrepreneurHiscox
 
De l'idée au produit en lean startup IT
De l'idée au produit en lean startup ITDe l'idée au produit en lean startup IT
De l'idée au produit en lean startup ITFabien Vauchelles
 

Destacado (20)

Apache camel et les entreprise integration patterns
Apache camel et les entreprise integration patternsApache camel et les entreprise integration patterns
Apache camel et les entreprise integration patterns
 
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre APIREST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
REST : Modèle de maturité de Richardson, Pour évaluer la RESTitude de votre API
 
AngularJS
AngularJSAngularJS
AngularJS
 
Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the future
 
Debug like a doctor
Debug like a doctorDebug like a doctor
Debug like a doctor
 
Firebase presentation
Firebase presentationFirebase presentation
Firebase presentation
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)
 
Introdução ao Firebase
Introdução ao FirebaseIntrodução ao Firebase
Introdução ao Firebase
 
Présentation du l'application Mobile "Passion Beauté 1.0"
Présentation du l'application Mobile "Passion Beauté 1.0"Présentation du l'application Mobile "Passion Beauté 1.0"
Présentation du l'application Mobile "Passion Beauté 1.0"
 
Carte de voeux 2015 par Eliott&Markus
Carte de voeux 2015 par Eliott&MarkusCarte de voeux 2015 par Eliott&Markus
Carte de voeux 2015 par Eliott&Markus
 
Facteurs orientation
Facteurs orientationFacteurs orientation
Facteurs orientation
 
Campagne presidentielle
Campagne presidentielleCampagne presidentielle
Campagne presidentielle
 
Conference Lois de finances et Actualités fiscales 2014 : connaissance et pra...
Conference Lois de finances et Actualités fiscales 2014 : connaissance et pra...Conference Lois de finances et Actualités fiscales 2014 : connaissance et pra...
Conference Lois de finances et Actualités fiscales 2014 : connaissance et pra...
 
En savoir plus sur Yves Doyon & Assoc
En savoir plus sur Yves Doyon & AssocEn savoir plus sur Yves Doyon & Assoc
En savoir plus sur Yves Doyon & Assoc
 
Manual bosch congelador integrable gid14 a20
Manual bosch   congelador integrable gid14 a20Manual bosch   congelador integrable gid14 a20
Manual bosch congelador integrable gid14 a20
 
Enquête Hiscox 2015, ADN d'un entrepreneur
Enquête Hiscox 2015, ADN d'un entrepreneurEnquête Hiscox 2015, ADN d'un entrepreneur
Enquête Hiscox 2015, ADN d'un entrepreneur
 
Dossier de Presse Tendances 2015
Dossier de Presse Tendances 2015Dossier de Presse Tendances 2015
Dossier de Presse Tendances 2015
 
L'école de Myslowice
L'école de MyslowiceL'école de Myslowice
L'école de Myslowice
 
De l'idée au produit en lean startup IT
De l'idée au produit en lean startup ITDe l'idée au produit en lean startup IT
De l'idée au produit en lean startup IT
 
Apva 5
Apva 5Apva 5
Apva 5
 

Similar a Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)

De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)Restlet
 
Javav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservicesJavav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservicesCERTyou Formation
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented ArchitectureDNG Consulting
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesENSET, Université Hassan II Casablanca
 
Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09Claude Coulombe
 
Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5Microsoft
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Tugdual Grall
 
Introduction to WebRTC on iOS
Introduction to WebRTC on iOSIntroduction to WebRTC on iOS
Introduction to WebRTC on iOSCocoaHeads France
 
Normes avancées du Web - GTI780 & MTI780 - ETS - A08
Normes avancées du Web  - GTI780 & MTI780 - ETS - A08Normes avancées du Web  - GTI780 & MTI780 - ETS - A08
Normes avancées du Web - GTI780 & MTI780 - ETS - A08Claude Coulombe
 
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhxml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhindguendouz2000
 
Presentation websockets
Presentation websocketsPresentation websockets
Presentation websocketsBert Poller
 
Le Cloud IaaS & PaaS, OpenStack réseau et sécurité
Le Cloud IaaS & PaaS, OpenStack réseau et sécuritéLe Cloud IaaS & PaaS, OpenStack réseau et sécurité
Le Cloud IaaS & PaaS, OpenStack réseau et sécuritéNoureddine BOUYAHIAOUI
 
Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)Restlet
 
Normes avancées du Web - GTI780 & MTI780 - ETS - A09
Normes avancées du Web  - GTI780 & MTI780 - ETS - A09Normes avancées du Web  - GTI780 & MTI780 - ETS - A09
Normes avancées du Web - GTI780 & MTI780 - ETS - A09Claude Coulombe
 

Similar a Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455) (20)

Advanced html5
Advanced html5Advanced html5
Advanced html5
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)
 
Javav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservicesJavav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservices
 
Ter Web Service Intro
Ter Web Service IntroTer Web Service Intro
Ter Web Service Intro
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Meteor js 1.0
Meteor js 1.0Meteor js 1.0
Meteor js 1.0
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented Architecture
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09
 
Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)
 
Introduction to WebRTC on iOS
Introduction to WebRTC on iOSIntroduction to WebRTC on iOS
Introduction to WebRTC on iOS
 
Normes avancées du Web - GTI780 & MTI780 - ETS - A08
Normes avancées du Web  - GTI780 & MTI780 - ETS - A08Normes avancées du Web  - GTI780 & MTI780 - ETS - A08
Normes avancées du Web - GTI780 & MTI780 - ETS - A08
 
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhxml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
 
Presentation websockets
Presentation websocketsPresentation websockets
Presentation websockets
 
Le Cloud IaaS & PaaS, OpenStack réseau et sécurité
Le Cloud IaaS & PaaS, OpenStack réseau et sécuritéLe Cloud IaaS & PaaS, OpenStack réseau et sécurité
Le Cloud IaaS & PaaS, OpenStack réseau et sécurité
 
Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Normes avancées du Web - GTI780 & MTI780 - ETS - A09
Normes avancées du Web  - GTI780 & MTI780 - ETS - A09Normes avancées du Web  - GTI780 & MTI780 - ETS - A09
Normes avancées du Web - GTI780 & MTI780 - ETS - A09
 

Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)

  • 1. REAL-TIME APPLICATIONS JSR-356 Java API for WebSocket Par : Ouadie LAHDIOUI RFC-6455 WebSocket Protocol Le : 29/10/2015
  • 2. CE QUE VOUS VERREZ PENDANT CETTE PRÉSENTATION SOMMAIRE 1 + Les limitations du protocole HTTP 101 + Les techniques de push de données + WebSocket - Kézako ? + La spécification IETF RFC 6455 « The WebSocket Protocol » + Le standard W3C « WebSocket JavaScript API » + JSR 356 « Java API for WebSocket » + Performances : WebSocket vs REST + Implémentations des WebSockets + Backend as service : La suite de la guerre du temps réel + Challenges d’une Application temps réel + Démonstration FireBase, PubNub, Pusher et RethinkDB Polling, Long-polling, Streaming, Comet, SSE(Server-Sent Events) benchmark Grizzly, Tomcat, Netty, Atmosphere, GlassFish, Tyrus Project et Jetty HTTP pipelining et Keep Alive Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 3. 1/4 LES LIMITATIONS DU PROTOCOLE HTTP 101 2 + HTTP 101 = HTTP 1.0 et HTTP 1.1 + Le HTTP 1.0 crée une connexion TCP pour chaque requête (page, image, etc …) + Le HTTP 1.1 des connexions persistantes pour obtenir les autres éléments de la page Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455) connexion persistante (keepalive)
  • 4. 2/4 LES LIMITATIONS DU PROTOCOLE HTTP 101 2 + Pipelining HTTP : une technique qui consistant à combiner plusieurs requêtes HTTP dans une seule connexion TCP Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 5. 3/4 LES LIMITATIONS DU PROTOCOLE HTTP 101 3 + HTTP est un protocole sans état (stateless protocol) qui fonctionne sur le modèle requête/réponse : + HTTP n’est pas optimisé pour les applications qui ont d’important besoins de communication temps réel bi-directionnelle (duplex) Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455) HTTP est unidirectionnel : Le server ne peut pas initier un transfert de données
  • 6. 4/4 LES LIMITATIONS DU PROTOCOLE HTTP 4 + Half duplex : Le client envoie une requête au serveur qui répond en lui renvoyant une réponse. Le client doit attendre la réponse. La transmission de données ne peut se faire que dans une direction en même temps. + Verbeux : Chaque requête et réponse HTTP doit avoir des en-têtes (headers). Ce qui augmente le trafic sur le réseau. + Il n'est pas possible d'utiliser un mode push de la part du serveur : Le serveur envoie à son initiative des données au client. + HTTP a été conçu pour obtenir des éléments du web. Il répond à de nombreux besoins mais il possède plusieurs inconvénients notamment pour une utilisation dans une application web interactive : Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 7. 1/5 LES TECHNIQUES DE PUSH DE DONNÉES 5 + Plusieurs techniques ont été développées pour contourner les limitations du protocole HTTP : + Polling : Le client effectue périodiquement des requêtes synchrones au serveur pour obtenir des données. Elle nécessite beaucoup de connexions selon la fréquence utilisée par le client. Cette technique peut être intéressante si les données sont périodiquement modifiées côté serveur. + Ajax Polling + JSONP Polling + Piggyback + … Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 8. 2/5 LES TECHNIQUES DE PUSH DE DONNÉES 6 + Long polling : Le client ouvre une connexion et envoie une requête HTTP au serveur qui ne renvoie la réponse que si un événement force l'envoi de données au client ou après un certain timeout. Le nombre de requêtes/réponses peut ainsi être réduit sauf si le nombre d'événements est très important. Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 9. 3/5 LES TECHNIQUES DE PUSH DE DONNÉES 7 + Streaming : Le client envoie une requête au serveur qui maintient le flux de la réponse ouvert en y envoyant des données au besoin. Cette technique repose sur l’utilisation de connexion http persistantes. Elle pose généralement des soucis avec certains éléments réseaux comme les firewalls ou les proxys Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 10. 4/5 LES TECHNIQUES DE PUSH DE DONNÉES 9 + Reverse Ajax ou bien Comet: Une technique combinant Ajax et long polling Un concept dont le but est de permettre à un serveur d'envoyer à son initiative des données à un navigateur. Plusieurs techniques sont utilisées pour répondre au concept Comet : + Forever Iframes + Multi-part XMLHttpRequest + Hidden Iframes Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 11. 5/5 LES TECHNIQUES DE PUSH DE DONNÉES 8 + Server Side Event : Un mécanisme de communication comparable à JMS : les clients s'inscrivent à un bus de messages auprès du serveur, qui peut alors leur transmettre des données de manière asynchrone via HTTP (= unidirectionnelle) L'API SSE est normalisée dans le cadre de HTML5 par le W3C. Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 12. 1/1 WEBSOCKET - KÉZAKO ? 10 + Une technologie permet d'ouvrir une connexion bi-directionnelle permanente entre un client et un serveur utilisant un canal en mode full duplex. + Permet le développement de véritables applications temps-réel performantes : application de suivi des cours boursiers, ou des applications multi-utilisateurs (chat, jeux en ligne...). Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 13. 1/1 COMPATIBILITÉ NAVIGATEUR 11Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455) + http://caniuse.com
  • 14. 12Source des images : kaazing.com
  • 15. 1/4 THE WEBSOCKET PROTOCOL LA SPÉCIFICATION IETF RFC 6455 13 + Le protocole WS permet l'échange de données entre un client et un serveur de manière asynchrone, bidirectionnelle en mode full duplex utilisant une connections TCP + La spécification du protocole WebSocket est définie dans la RFC 6455, publiée en décembre 2011 par Internet Engineering Task Force (IETF) + WS est : + basé sur 1 unique connexion TCP entre 2 peers + bi-directionnel : le client peut envoyer un message au serveur et le serveur peut envoyer un message au client + full-duplex : le client peut envoyer plusieurs messages vers le serveur et le serveur vers le client sans attendre de réponse l’un de l’autre Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 16. 2/4 THE WEBSOCKET PROTOCOL LA SPÉCIFICATION IETF RFC 6455 14 + Le protocole WebSocket fonctionne en 2 phases : handshake et data transfer + HTTP half-duplex + WebSocket full-duplex Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 17. 3/4 THE WEBSOCKET PROTOCOL LA SPÉCIFICATION IETF RFC 6455 15 + Handshake : Unique échange requête/réponse HTTP entre l’initiateur de la connexion (peer client) et le peer serveur. Cet échange HTTP utilise le mécanisme HTTP Upgrade L’Upgrade HTTP permet au client de communiquer avec le serveur pour lui demander de changer de protocole de communication + Requête HTTP Handshake + Réponse HTTP Handshake Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 18. 4/4 THE WEBSOCKET PROTOCOL LA SPÉCIFICATION IETF RFC 6455 17Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455) + Data transfer Une fois le handshake acceptée, une gestion de callback est activée pour initier la communication Les 2 peers s'échangent des messages dans une communication bi-directionnelle et full-duplex
  • 19. WEBSOCKET JAVASCRIPT API LE STANDARD W3C 18 + Pour communiquer avec un serveur via le protocole WS, il est nécessaire d’utiliser une API cliente en Javascript. + L’interface WebSocket propose des gestionnaires d'évènements pour s’adapter aux méthodes du cycle de vie des WebSocket : + l’Event-Handler onopen est appelé lorsqu’une nouvelle connexion est initiée + l’Event-Handler onerror est appelé lorsqu’une erreur est reçue pendant la communication + l’Event-Handler onmessage est appelé lorsqu’un message est reçu Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 20. JAVAAPI FOR WEBSOCKET JAVA SPECIFICATION REQUESTS 356 19 + Le W3C définit comment utiliser WebSocket en Javascript, le Java Communitee Process (JCP) fait de même pour le monde Java via la JSR 356 + La spécification JSR 356 définit une API Java pour WebSocket qui propose : + La création d’un WebSocket Endpoint + L’utilisation l’approche par annotation Java ou par programmation + La possibilité d’envoyer et de consommer des messages en synchrone ou en asynchrone + La configuration et la gestion des sessions WebSocket (timeout, cookies…) + Une intégration dans Java EE Web Profile Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 21. JAVA SPECIFICATION REQUESTS 356 20 JAVAAPI FOR WEBSOCKET Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 22. 1/1 PERFORMANCES : WEBSOCKET VS REST 21 + Benchmark publié par Arun Gupta sur GitHub Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 23. 1/1 IMPLÉMENTATIONS DES WEBSOCKETS 22 + Plusieurs implémentations des WebSockets sont disponibles : Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 24. 1/1 BACKEND AS SERVICE LA SUITE DE LA GUERRE DU TEMPS RÉEL 23 + Certaines solutions proposent du temps réel et le stockage de fichiers décentralisé sur leur infrastructure : + Concept de « room » pour publier et retrouver les messages + BaaS : Backend as service Real-Time applications avec la spécification Java pour les WebSockets (JSR 356) et le protocole WebSocket (RFC 6455)
  • 25. PROXY, REVERS PROXY, FIREWALL, LOAD BALANCING… CHALLENGES D’UNE APPLICATION TEMPS RÉEL 24Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 26. LIVRES 25 + Java WebSocket Programming + The Definitive Guide to HTML5 WebSocket Real-Time applications avec la spécification Java (JSR 356) et le protocole WebSocket (RFC 6455)
  • 27. MERCI POUR VOTRE ATTENTION Real-Time applications avec la spécification Java pour les WebSockets (JSR 356) et le protocole WebSocket (RFC 6455) 26 Références : • Internet Engineering Task Force (IETF) RFC 6455: http://tools.ietf.org/html/rfc6455 • W3C The WebSocket API : http://www.w3.org/TR/websockets/ • Java Specification Requests 356 “Java API for WebSocket” : http://jcp.org/en/jsr/detail?id=356 • HTML5 Web Sockets Specification: http://dev.w3.org/html5/websockets/ • Server Sent Events : http://www.w3.org/TR/2011/WD-eventsource-20110208/