le web en temps réel - socket.io - nodejs
TRANSCRIPT
Socket.ioLe web en temps réel
/ Thomas Ferney Clément De Figueiredo
http://realtimeweb.antiseptikk.fr
Sommaire
Introduction au concept
Méthodes de communication en temps réel
Node.js
Socket.io
Applications
Conclusion
Web en temps réelCollaboratif + Multi-écrans + Nouveaux contextes
Méthode de communication entemps réel
Pooling effectué toutes les secondesRisque de surcharge en cas de forte affluence
Ajax Long PoolingVariation du pooling
Connexion ouverte en attente de donnéesConnexion fermée par une réponse ou par un timeout
Nombreuses connexions ouvertes en même temps
Ajax Multipart StreamingMéthode basée sur Gecko(Netscape Navigator, Firefox...)
Ajout du paramètre multipart = true à l'objet XMLHttpRequestUtilisation du content multipart/x-mixed-replace qui permettra de
streamer les données
Forever iframeCacher une iframe avec les mentions :
Transfer-encoding : chunkedConnection : keep-alive
Barre de chargement infini sur certains navigateurs
WebSocketsCommunication bi-directionnelle sur un socket TCP
Méthodes standards sur tous les navigateurs
Environnement d'exécution de programme JavaScript développé enC++
Interprétation du code à l'aide du moteur V8 de GoogleGestion d'une bibliothèque de modules avec NPM
Création du serveurvar http = require('http'), fs = require('fs');
http.createServer(function(req, res)
res.writeHead(200, 'ContentType': 'text/html', 'AccessControlAllowOrigin': '*' );
var readStream = fs.createReadStream(__dirname + '/index.html');
readStream.pipe(res);
).listen(3000);
console.log('http://localhost:3000');
Framework JavaScript utilisant les WebSocketsSupport étendu des navigateurs
Disponible depuis NPM
Exemple d'implémentation serveurvar app = require('http').createServer(handler);var io = require('socket.io')(app);var fs = require('fs');
app.listen(80);
function handler (req, res) fs.readFile(__dirname + '/index.html', function (err, data) res.writeHead(200); res.end(data); );
io.on('connection', function(socket) socket.emit('news', hello: 'world' ););
Exemple d'implémentation client<script src="/socket.io/socket.io.js"></script><script>
</script>
var socket = io('http://localhost');
socket.on('news', function (data) console.log(data); );
Application de monitoringDaemon en CBDD MySQL
Dashboard HTML / JavaScript sur un serveur Node.js
Application de listes de coursescollaboratives
BDD MongoDBWeb app AngularJS sur Node.js
Conclusion
Node.jsFacilePuissant
Socket.ioAbstractionAPI bien fournie
Temps réel en quelques lignes
Merci à tous !Contact : / @MrAntiseptikk @CaptainKali