Nous savons que l’animation est essentielle pour l'interaction avec nos utilisateurs. Mais aujourd'hui l'interactivité ne peut plus se résumer à l’UX. Twitter, Waze, Slack … toutes les applications à succès utilisent le temps réel pour rendre leurs utilisateurs addicts.
Mais comment faire pour transformer votre API statique en un flux de données temps-réel ? Du pull ? Du push ? Des Webhooks ? Vous connaissez sûrement les Web-Sockets, mais avez vous déjà entendu parler de Server-Sent Events ?
Dans ce talk nous comparerons ces technologies pour comprendre dans quel cas elles s'appliquent le mieux avant de voir comment on peut aller encore plus loin en réduisant la quantité de données échangées. Et parce qu'il n'y a pas que le web qui a besoin de temps réel (et parce que c'est bien plus fun), je vous montrerai comment faire danser des drones sur des APIs streamées.
26. HTTP/1.1 201 Created
Link:<http://subscription-serve
r.com/subscription>;
rel="subscription"
@StreamdataIOstreamdataio
WEBHOOKS
POST /eventsource HTTP/1.1
Host: subscription-server.com
Pragma: subscribe
Callback:
<http://example.com/callback>;
method="POST"
rel="subscriber"
POST /callback HTTP/1.1
Host: example.com
Link:
<http://subscription-server.com
/subscription>;
rel="subscription"
Content-HMAC: sha1
C+7Hteo/D9vJXQ3UfzxbwnXaijM=
Content-Length: 21
Content-Type:
application/x-www-form-urlencod
ed
payload=Hello%20world
Consumer API Provider
27. #DevoxxFR @Audrey_Neveu
✓ Define a callback URL
TODO LIST
Consumer API Provider
✓ Implement your webhook queue
- inline HTTP Requests
- SQL-based queue
- AMQP broker
- batch
28. #DevoxxFR @Audrey_Neveu
✓ Define a callback URL ✓ Create a subscription endpoint
- GET /webhook
- POST /webhook
- GET /webhook/{id}
- PUT /webhook/{id}
- DELETE /webhook/{id}
TODO LIST
Consumer API Provider
31. #DevoxxFR @Audrey_Neveu
PROS AND CONS
✓ Real-Time updates
✓ Easily consumed
✓ Without dedicated resources
■ Poor user experience
■ Does not work with all clients
■ Manual setup✓ Easily integrated
■ Debugging
32. #DevoxxFR @Audrey_Neveu
PROS AND CONS
✓ Easily consumed
✓ Without dedicated resources
■ Poor user experience
■ Does not work with all clients
■ Manual setup✓ Easily integrated
■ Debugging
✓ (almost) Real-Time updates
49. #DevoxxFR @Audrey_Neveu
UNSUBSCRIBE - SUBSCRIBERS 1/2
POST https://my-hub.com/
…
hub.mode="unsubscribe"
hub.topic="https://my-resource.com/"
hub.callback="http://example.com/callback"
Subscribers Send unsubscription request to the Hub
50. #DevoxxFR @Audrey_Neveu
UNSUBSCRIBE - HUB
GET http://example.com/callback
…
hub.mode="unsubscribe"
hub.topic="https://my-resource.com/"
hub.challenge="a random string"
Hub Verify intent of the subscribers
51. #DevoxxFR @Audrey_Neveu
UNSUBSCRIBE - SUBSCRIBERS 2/2
HTTP/1.1 200 OK
Body:{
hub.challenge: "a random string"
}
Subscribers Answer verification request
52. #DevoxxFR @Audrey_Neveu
WEBHOOKS PROS AND CONS
✓ (almost) Real-Time updates
✓ Easily consumed
✓ Without dedicated resources
■ Poor user experience
■ Does not work with all clients
■ Manual setup✓ Easily integrated
■ Debugging
53. #DevoxxFR @Audrey_Neveu
WEBHOOKS PROS AND CONS
✓ (almost) Real-Time updates
✓ Easily consumed
✓ Without dedicated resources
■ Does not work with all clients
✓ Easily integrated
■ Debugging
■ Need another call to get data