websockets par martin moizard
TRANSCRIPT
Temps réel&
WebSocketsMartin Moizard
vendredi 14 février 14
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
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('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
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
WebSocket & iOSSocketRocket
• Conforme au protocole
• Développé et maintenu par Square
• Utilisé en prod
vendredi 14 février 14
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
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
WebSocket & iOS
• Code & démo
vendredi 14 février 14
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
MERCI !
@MartinMoizard
https://github.com/MartinMoizard/Realtime-samples
vendredi 14 février 14