Pourquoi la rapidité et la quantité de données à transférer sont des critères de plus en plus importants ? Quels solutions existent aujourd'hui ? Demain ? Notre solution avec Server Sent Event et JSONPatch
5. Des applications de plus en plus
« temps réel »
• Bourse / Paris en ligne
• Réseaux sociaux
• Moteurs de recherche
• News
• Biens / Services disponibles
(Sharing economy & promotions)
9. Ressenti des utilisateurs
Reaction time
of an app
Impact /
Feeling
0,1 Secondes0,5 2 3 5 101 4
« Slow »
40 à 60% drops
on desktop web
« Very slow »
30 à 40% drops
on mobile web
Loss of attention
Nervousness
Tiredness
« Regular »« Instant »
Perfect (eq.
Human
Realtionship)
No waiting
10. Une marche difficile à franchir
• Usages des services web explosent.
• Pile de protocoles pas designée pour les
usages d’aujourd’hui.
• Un monde qui devient de + en + temps réel.
• Limitation des réseaux mobiles (latence).
15. Un pas vers le futur
• HTTP/2
• Server-Sent Events (PUSH)
• JSON Patch (Mise à jour incrémentale des
données)
16. Un pas vers le futur
• HTTP/2
• Server-Sent Events (PUSH)
• JSON Patch (Mise à jour incrémentale des
données)
17. HTTP/2
• Protocole Binaire
• Multiplexing: Réutilisation de la même
connection TCP pour plusieurs requêtes HTTP
• Compression des Headers
• Cache Pushing: Permet de pousser
proactivement des données au client afin de
limiter les roundtrips réseau.
19. Les solutions pour les données dynamiques
Browser
support
Web infra
compatibility
Easiness to
dev
Load
(network /
Device)
Bidirectional App latency
Polling/Lon
g Polling
Websocket
SSE
20. SSE vs Websocket
Les avantages of SSE vs Websocket:
• Couche de transport basée sur HTTP.
• Possibilité d’utiliser un “polyfill” pour étendre la compatibilité.
• Mécanisme de re-connection avec reprise (event-id)
• Implémentation beaucoup plus simple
Les avantages des Websockets vs SSE:
• Communication bi-directionelle.
• Supporté plus largement par les navigateurs
21. SSE vs Websocket (Perf.)
Source http://matthiasnehlsen.com/blog/2013/05/01/server-sent-events-vs-websockets/
Use case: Préchargement de 500 Tweets sur une page web
(nginx configuré en tant que proxy)
Safari Chrome Firefox
Websockets 16s 8s 8s
SSE 7s 5s 6s
diff x2,2 x1,6 x1,3
https://github.com/matthiasn/BirdWatch
22. Standard for Incremental Updates:
JSON Patch
source http://jsonpatch.com/
{
"baz": "qux",
"foo": "bar"
}
The patch
The result
[
{ "op": "replace", "path": "/baz", "value": "boo" },
{ "op": "add", "path": "/hello", "value": ["world"] },
{ "op": "remove", "path": "/foo"}
]
{
"baz": "boo",
"hello": ["world"]
}
En mai 1996, HTTP/1.0 voit le jour et est décrit dans la RFC 1945.
En janvier 1997, HTTP/1.1 devient finalement standard de l'IETF.
----- Notes de la réunion (12/06/2015 12:11) -----
- Temps de réaction humain si l'on marche sur un oursin 150ms
- Temps de réaction humain pour répondre à une question ouverte 500ms
- Sur Mobile est attente sont de plus en plus forte
Polyfill pour IE
OK avec Spartan / Edge
Polling: Coute très cher en volume de donnée échangé mais si il n’y a pas de changement
Pose encore plus de problème sur Mobile => Batterie (idée reçu sur le maintien de connexion peu impactant)
Application client twitter dispo sur GitHub
1ère implémentation en websocket puis migration vers SSE