Temps réel
&
WebSockets
Martin Moizard

vendredi 14 février 14
Pourquoi du temps réel ?
• Avoir des données à jour
• Minimiser les actions utilisateurs

Pourquoi des WebSockets ?
• Perf...
Dans la vie...
polling vs webSockets

vendredi 14 février 14
Dans la vie...
polling vs webSockets

vendredi 14 février 14
Boostrap serveur (1/2)
Node.js & SockJS

var connectedDevices = [];
var echo = sockjs.createServer(options);
echo.on('conn...
Boostrap serveur (2/2)
Envoi de message

app.post('/dispatchMessage', function(req, res) {
var messageToDispatch = req.bod...
WebSocket & iOS
SocketRocket

• Conforme au protocole
• Développé et maintenu par Square
• Utilisé en prod

vendredi 14 fé...
WebSocket & iOS
Les règles à respecter

• Ouvrir la socket tôt et à tout moment :
•
•
•

Tentative d’ouverture de la socke...
WebSocket & iOS
A la reception du message

• Pattern possible : les notifications
•
•

vendredi 14 février 14

L’objet qui ...
WebSocket & iOS

•

vendredi 14 février 14

Code & démo
WebSocket & iOS
Les limites

• Attention à la configuration de certains
opérateurs téléphoniques

• Protocole bloqué (cas d...
MERCI !

@MartinMoizard
https://github.com/MartinMoizard/Realtime-samples

vendredi 14 février 14
Prochain SlideShare
Chargement dans…5
×

Websockets par Martin Moizard

3 992 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
3 992
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3 328
Actions
Partages
0
Téléchargements
9
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Websockets par Martin Moizard

  1. 1. Temps réel & WebSockets Martin Moizard vendredi 14 février 14
  2. 2. Pourquoi du temps réel ? • Avoir des données à jour • Minimiser les actions utilisateurs Pourquoi des WebSockets ? • Performances • Facilité et simplicité vendredi 14 février 14
  3. 3. Dans la vie... polling vs webSockets vendredi 14 février 14
  4. 4. Dans la vie... polling vs webSockets vendredi 14 février 14
  5. 5. Boostrap serveur (1/2) Node.js & SockJS var connectedDevices = []; var echo = sockjs.createServer(options); echo.on('connection', function(conn) { connectedDevices.push(conn); conn.on('data', function(message) { }); conn.on('close', function() { connectedDevices.splice(connectedDevices.indexOf(conn), 1); }); }); vendredi 14 février 14
  6. 6. Boostrap serveur (2/2) Envoi de message app.post('/dispatchMessage', function(req, res) { var messageToDispatch = req.body["message"]; var i = 0; if (messageToDispatch && messageToDispatch.length) { for (; i < connectedDevices.length; i++) { connectedDevices[i].write(messageToDispatch); } } res.type('application/json; charset=utf-8'); res.send('{ "result" : "message dispatched to ' + i + ' devices" }'); }); vendredi 14 février 14
  7. 7. WebSocket & iOS SocketRocket • Conforme au protocole • Développé et maintenu par Square • Utilisé en prod vendredi 14 février 14
  8. 8. WebSocket & iOS Les règles à respecter • Ouvrir la socket tôt et à tout moment : • • • Tentative d’ouverture de la socket dans l’AppDelegate Reachability Dès que la socket fail ou se ferme pour une raison iconnue (delegates) • Eviter les reconnexions dans un intervalle de temps réduit • Mettre en place un retry automatique incrémental borné (à 30s par ex.) vendredi 14 février 14
  9. 9. WebSocket & iOS A la reception du message • Pattern possible : les notifications • • vendredi 14 février 14 L’objet qui gère la WebSocket reçoit le message et envoie une notification avec le message attaché Les controlleurs/vues intéressés s’abonnent à la notification et gèrent la réception de la notification et le traitement du message.
  10. 10. WebSocket & iOS • vendredi 14 février 14 Code & démo
  11. 11. WebSocket & iOS Les limites • Attention à la configuration de certains opérateurs téléphoniques • Protocole bloqué (cas de SFR) • Workaround : SSL vendredi 14 février 14
  12. 12. MERCI ! @MartinMoizard https://github.com/MartinMoizard/Realtime-samples vendredi 14 février 14

×