require('dotenv').config() const express = require('express') const app = express() const http = require('http') const socket_io = require('socket.io') const path = require('path') app.use(express.static('public', { extensions: ['html'] })) function serve_index(req, res) { res.sendFile(path.join(__dirname, '../../public', 'index.html')) } app.get('/dashboard/', serve_index) app.get('/system/', serve_index) app.get('/checkpoints/', serve_index) app.get('/datasets/', serve_index) app.get('/live/', serve_index) app.get('/', serve_index) // app.get('/images', site.images) // app.post('/print', bodyParser.urlencoded({ extended: false }), site.print) // app.use('/upload', require('./upload')) let server = http.createServer(app) server.listen(process.env.EXPRESS_PORT, () => { console.log('Cortex remote listening on http://localhost:' + process.env.EXPRESS_PORT) }) const io = socket_io(server) let relay, client client = io.of('/client') client.on('connect', bind_client) if (process.env.EXPRESS_CONNECTS_TO_RELAY === 'true') { console.log('Connecting to relay on ' + process.env.RELAY_REMOTE) relay = require('socket.io-client').connect(process.env.RELAY_REMOTE) bind_relay(relay) } else { relay = io.of('/relay') relay.on('connect', bind_relay) } function bind_relay(socket) { console.log('Relay connected') socket.on('res', data => { console.log('Received response', data.cmd) client.emit('res', data) }) socket.on('status', data => { console.log('Received status', data.key) client.emit('status', data) }) socket.on('system_res', data => { console.log('System responded', data.cmd) client.emit('system_res', data) }) socket.on('frame', (data) => { client.volatile.emit('frame', data) }) socket.on('disconnect', () => { console.log('Relay disconnected') }) } function bind_client(socket){ console.log('Client connected') socket.on('cmd', data => { console.log('Client sent command', data) relay.emit('cmd', data) }) socket.on('system', data => { console.log('Client sent system command', data) relay.emit('system', data) }) socket.on('disconnect', () => { console.log('Client disconnected') }) }