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
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. WebSocket & iOS
SocketRocket
• Conforme au protocole
• Développé et maintenu par Square
• Utilisé en prod
vendredi 14 février 14
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. 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.
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