var http = require('http'); var php = require('php'); var fs = require('fs'); var phpExpress = require('php-express')({ binPath: 'php' }); var express = require('express'); var app = express(); var path = require('path'); var server = http.createServer(app); //var server = http.createServer(php); //var port = 8000; var osc = require('osc'); var activeUsers = new Set(); // Active users Set /////////////////////////////////////////////////////// php var router = express.Router(); var bodyParser = require('body-parser'); app.use(bodyParser.json()); app.set('port', (process.env.PORT || 8000)); //app.get('/',function(req,res){ // res.sendFile(path.join(__dirname, 'public', 'index.php')); //}); app.use('/', express.static(__dirname)); app.set('public', path.join(__dirname, '/public')); app.engine('php', phpExpress.engine); app.set('view engine', 'php'); app.all(/.+\.php$/, phpExpress.router); app.use(function (req, res, next) { res.status(404).send("Sorry can't find that!") }); app.listen(app.get('port'), function() { console.log('Node app is running on port', app.get('port')); }); //server.listen(port, () => { // console.log("Server is listening at port %d", port); //}); //app.use(express.static(path.join(__dirname, "public"))); //app.use(express.static('public')); //var server = app.listen(8000, function() { // console.log('listening on requests on port 8000'); //}); // //app.get('/',function(req,res){ // res.sendFile(path.join(__dirname, 'public', 'index.php')); //}); //app.set('views', __dirname+'public'); //app.engine('php', phpExpress.engine); //app.all('/index.php', function(req, res) { // res.render('phpinfo'); //}) //app.all(/.+\.php$/, phpExpress.router); //Static files //app.use(express.static('public')); //////////////////////////////////////////////////////////// var udpPort = new osc.UDPPort({ // This is the port we're listening on. localAddress: "0.0.0.0", localPort: 57121, // This is where sclang is listening for OSC messages. remoteAddress: "192.168.2.15", //this is the hamsters ip remotePort: 8080, //this is the hamsters port :*s metadata: true }); // Open the socket. udpPort.open(); const { SerialPort } = require('serialport') const { ReadlineParser } = require('@serialport/parser-readline') const sport = new SerialPort({ path: '/dev/ttyACM0', baudRate: 115200 }) const parser = sport.pipe(new ReadlineParser({ delimiter: '\r\n' })) //server.listen(port, () => { // console.log("Server is listening at port %d", port); //}); //app.use(express.static(path.join(__dirname, "public"))); //app.use(express.static('public')); var io = require('socket.io')(server); io.on('connection', function(socket) { console.log("new user online!"); // Add the new socket ID to the activeUsers Set activeUsers.add(socket.id); // Emit the updated activeUsers Set to all connected clients io.emit('activeUsers', Array.from(activeUsers)); parser.on('data', function(data) { const msg = data.split(' '); console.log(msg[0], msg[1]); io.emit('node-data', data); }); socket.on("blink", () => { console.log("Blink event received!"); io.emit("blink"); // Emit the "blink" event to all connected clients }); socket.on('chat message', (msg) => { console.log('[user][' + socket.id + '][' + msg + ']'); socket.broadcast.emit('chat message', msg); var oscmsg = { address: "/silentserver", args: [ { type: "s", value: socket.id }, { type: "s", value: msg } ] }; udpPort.send(oscmsg); }); socket.on('userposition', (msg) => { console.log('[user][' + socket.id + '][position: ' + msg[0] + ',' + msg[1] + ']'); socket.to('expo').emit(socket.id, msg); }); // Handle disconnection event socket.on('disconnect', () => { console.log("new user online:", socket.id); // Remove the disconnected socket ID from the activeUsers Set activeUsers.delete(socket.id); // Emit the updated activeUsers Set to all connected clients io.emit('activeUsers', Array.from(activeUsers)); }); });