websockets par martin moizard

12
Temps réel & WebSockets Martin Moizard vendredi 14 février 14

Upload: cocoaheads-france

Post on 15-May-2015

3.441 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Websockets par Martin Moizard

Temps réel&

WebSocketsMartin Moizard

vendredi 14 février 14

Page 2: Websockets par Martin Moizard

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

Page 3: Websockets par Martin Moizard

Dans la vie...polling vs webSockets

vendredi 14 février 14

Page 4: Websockets par Martin Moizard

Dans la vie...polling vs webSockets

vendredi 14 février 14

Page 5: Websockets par Martin Moizard

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

Page 6: Websockets par Martin Moizard

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

Page 7: Websockets par Martin Moizard

WebSocket & iOSSocketRocket

• Conforme au protocole

• Développé et maintenu par Square

• Utilisé en prod

vendredi 14 février 14

Page 8: Websockets par Martin Moizard

WebSocket & iOSLes 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

Page 9: Websockets par Martin Moizard

WebSocket & iOSA la reception du message

• Pattern possible : les notifications

• 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.

vendredi 14 février 14

Page 10: Websockets par Martin Moizard

WebSocket & iOS

• Code & démo

vendredi 14 février 14

Page 11: Websockets par Martin Moizard

WebSocket & iOSLes limites

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

• Protocole bloqué (cas de SFR)

• Workaround : SSL

vendredi 14 février 14

Page 12: Websockets par Martin Moizard

MERCI !

@MartinMoizard

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

vendredi 14 février 14