Node.js e Socket.io

Node.js e Socket.io

Divertiamoci con Node.js e Socket.io e creiamo una semplice applicazione dove utilizziamo il cellulare per comandare uno schermo il tutto in real-time.
Iniziamo dal server cosi fatto:

var express = require(‘express’);
var app = express();
var server = require(‘http’).Server(app);
var io = require(‘socket.io’)(server);

server.listen(8080);

app.use(express.static(__dirname + ‘/public’));

io.on(‘connection’, function (socket) {

socket.on(‘room’, function(room) {
socket.join(room);
});

//visualizza mappa
socket.on(‘funzione1’, function (data) {
console.log(“funzione1”);
io.sockets.in(“server”).emit(‘event1’, ‘what is going on, party people?’);
});

socket.on(‘funzaggiungereimmagine’, function (data) {
console.log(“funzaggiungereimmagine”);
io.sockets.in(“server”).emit(‘aggiungereimmagine’, data);
});

});

Questo codice fa partire un server web che fa il display di pagine statiche HTML presenti dentro la cartella /public e sta in ascolto sulla porta 8080, in più permette di gestire le stanze su Socket.io cosi da creare una stanza “server” dove starà in ascolto solo lo schermo che vogliamo utilizzare come display unico. Invece gli smartphone che faranno da telecomandi emetteranno soltanto messaggi senza rimanere in ascolto su “room” particolari.

schermo.html

<script src=”/socket.io/socket.io.js”></script>
<script>
var socket = io.connect(‘http://localhost:8080’);
var room = “server”;

socket.on(‘connect’, function() {
// Connected, let’s sign-up for to receive messages for this room
socket.emit(‘room’, room);
});
</script>

Con questo codice iscriviamo questa pagina alla room “server” cosi da gestire tutti i messaggi in entrata.

Invece sulla pagina web visibile agli smartphone sarà necessario associare gli eventi che vogliamo lanciare in base alle azioni dell’utente, ad esempio:

smartphone.html

<script src=”/socket.io/socket.io.js”></script>
<script>
var socket = io.connect(‘http://localhost:8080’);
socket.emit(‘funzione1’,null);

function aggiungiImmagine(domanda,risposta){
socket.emit(‘funzaggiungereimmagine’,risposta);
}
</script>

Gli eventi inviati sono di prova e vanno associati ad azioni concrete ma è una base per una piattaforma interattiva.

Start typing and press Enter to search