Non parliamo ovviamente di comandi di sistema, ma di comandi che è possibile dare in una pagina web quando è in modalità designMode.

Per fare questo, useremo la funzione execCommand!

Cosa importante, il contenitore su cui eseguire comandi deve essere editable; e per questo c'è l'apposito attributo HTML contenteditable.

Partendo da una classica lista HTML, vogliamo filtrarla scrivendo dentro ad una input text.

Possiamo farlo in Javascript in maniera abbastanza semplice.

Per creare grafici nelle nostre pagine web, siamo abituati ad usare librerie esterne in Javascript.

Anche giustamente, visto che ce ne sono alcune spettacolari.

Ma in verità possiamo creare grafici anche per conto nostro, usando HTML, Canvas e Javascript (ovviamente).

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');
});