const express = require('express'); const { Bundle, Client } = require('node-osc'); const path = require('path'); const bodyParser = require('body-parser'); const app = express(); const oscClient = new Client('127.0.0.1', 3333); let fseq; const alive = []; const server = require('http').Server(app); 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.post('/json', function (req, res) { //console.log(req.body); fseq = fseq ? fseq + 1 : 1; let oscBundle; if (req.body.event === 'touchend') { oscBundle = new Bundle( //[ '/tuio/2Dcur', 'source', 'touch@127.0.0.1:5001' ], [ '/tuio/2Dcur', 'alive' ], [ '/tuio/2Dcur', 'fseq', fseq ] ); } else { //if (req.body.changedTouches && req.body.changedTouches.length && req.body.changedTouches.length > 0) { const touches = Object.keys(req.body.changedTouches); touches.forEach(touch => { if (!alive.includes(req.body.changedTouches[touch].identifier)) { alive.push(req.body.changedTouches[touch].identifier); } }); oscBundle = new Bundle( //[ '/tuio/2Dcur', 'source', 'touch@127.0.0.1:5001' ], [ '/tuio/2Dcur', 'alive', alive.join(' ') ], [ '/tuio/2Dcur', 'fseq', fseq ] ); touches.forEach(touch => { console.log(req.body.changedTouches[touch]); oscBundle.append( [ '/tuio/2Dcur', 'set', req.body.changedTouches[touch].identifier, req.body.changedTouches[touch].clientX / req.body.screenW, req.body.changedTouches[touch].clientY / req.body.screenH, 0.0, 0.0 ] ); }); oscClient.send(oscBundle, () => { res.status(200).json(JSON.stringify(req.body)); }); //} } }); server.listen(5001, function () { console.log('Votre app est disponible sur localhost:5001 !') });