require('dotenv/config');

const express = require('express');
const path = require('path');

const app = express();

/**
 * Declare HTTP and Websocket protocols
 */
const server = require('http').createServer(app);
const io = require('socket.io')(server);

app.use(express.static(path.join(__dirname, '../Public')));

/**
 * Configure html view engine
 */
app.set('views', path.join(__dirname, '../Public'));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');

app.use('/', (req, res) => {
    res.render('index.html')
});

let messages = [];

io.on('connection', socket => {
    console.log(`Socket ${socket.id} connected`);

    socket.emit('previous-messages', messages);

    socket.on('send-message', data => {
        messages.push(data);
        socket.broadcast.emit('receive-message', data);
    })
})

server.listen(3333, () =>
    console.log(`Server listen on port: 3333`)
);