const express = require('express'); const dgram = require('dgram'); const oscParser = require('./osc-parser'); const bodyParser = require('body-parser'); const path = require('path'); const app = express(); const server = require('http').Server(app); const io = require('socket.io')(server, { transports: ['websocket'] }); const onSocketListening = function() { const address = udpSocket.address(); console.log('Serveur TUIO en écoute sur : ' + address.address + ':' + address.port); }; const onSocketConnection = function(socket) { udpSocket.on('message', function(msg) { socket.emit('osc', oscParser.decode(msg)); }); }; const udpSocket = dgram.createSocket('udp4'); udpSocket.on('listening', onSocketListening); udpSocket.bind(3333, '127.0.0.1'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended:true})); app.use(express.static('./frontend/assets')); app.get('/', function (req, res) { res.sendFile('./frontend/index.html', { root: path.resolve(__dirname + '/..') }) }); app.get('/json', function (req, res) { res.status(200).json({'message': 'ok'}) }); io.sockets.on('connection', (socket) =>{ console.log(`Connecté au client ${socket.id}`); const dgramCallback = function (buf) { console.log(oscParser.decode(buf)); socket.emit('osc', oscParser.decode(buf)); }; // forward UDP packets via socket.io udpSocket.on('message', dgramCallback); // prevent memory leak on disconnect socket.on('disconnect', function (socket) { udpSocket.removeListener('message', dgramCallback); }); }); // on change app par server server.listen(5000, function () { console.log('App frontend disponible sur localhost:5000 !') });