Socket.io ha la possibilità di inviare messaggi a tutti i client connessi (broadcasting) in maniera veramente easy.

Penso sia più facile visualizzare un esempio; partiamo dal Javascript:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var clients = 0;

app.get('/', function (req, res) {
    res.sendFile('index.html', {root: __dirname});
});

io.on('connection', function (socket) {
    clients++;
    io.sockets.emit('broadcast', {description: clients + ' clients connected!'});
    socket.on('disconnect', function () {
        clients--;
        io.sockets.emit('broadcast', {description: clients + ' clients connected!'});
    });
});

http.listen(3000, function () {
    console.log('listening on *:3000');
});

Con Socket.io è possibile intercettare / emettere eventi, ed agire di conseguenza.

Ne vediamo tre esempi.

Il primo riguarda l'evento message, che è un evento built-in del framework:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function (req, res) {
    res.sendFile('index.html', {root: __dirname});
});

io.on('connection', function (socket) {
    console.log('A user connected');

    setTimeout(function () {
        socket.send("Messaggio dopo 3 secondi");
    }, 3000);

    socket.on('disconnect', function () {
        console.log('A user disconnected');
    });

});

http.listen(3000, function () {
    console.log('listening on *:3000');
});

Socket.io è un framework per Node.js per la costruzione di applicazioni realtime.

Il suo uso di base non è molto difficile, ed è tutto in linea con il modo di programmare di Node.js.

Oggi vediamo un'introduzione.

Iniziamo con il creare il progetto:

$ mkdir TestSocket
$ cd TestSocket
$ npm init

Ovviamente, con questo articolo, non abbiamo la pretesa di creare un server HTTP completo!

Ma di creare una sorta di server HTTP in grado di rispondere alla richieste dei client, senza usare le socket.

Useremo questi oggetti:

Potete vedere le Javadoc cliccando sui link.

Oggi vediamo creare un semplice client WHOIS in Python.

Sottolineo semplice perchè interrogheremo solo un server WHOIS, e non faremo particolari controlli su ciò che ha inserito l'utente in input.

Ma può essere un punto di partenza.

Cominciamo col dire che useremo Python 3, ed i moduli sys e socket.