From eb22f86f4aff11e11f43712be41df7cb1fa9fb16 Mon Sep 17 00:00:00 2001 From: GuilhermeWerner <guinerdinho@gmail.com> Date: Mon, 1 Jun 2020 18:17:13 -0300 Subject: [PATCH] Complete initial features --- public/index.html | 27 ++++++++++++++++++++------- src/server.js | 17 +++++++++++++++-- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/public/index.html b/public/index.html index fcb6f97..dcc2f12 100644 --- a/public/index.html +++ b/public/index.html @@ -57,10 +57,7 @@ </div> <div class="pt-4"> <div class="card"> - <ul class="list-group list-group-flush"> - <li class="list-group-item"><strong>Username:</strong> Message</li> - <li class="list-group-item"><strong>Username:</strong> Message</li> - <li class="list-group-item"><strong>Username:</strong> Message</li> + <ul class="list-group list-group-flush" id="messages"> </ul> </div> </div> @@ -84,16 +81,32 @@ <script type="text/javascript"> var socket = io('http://localhost:3000'); + function renderMessage(message) { + $('#messages').append(`<li class="list-group-item"><strong>${message.author}:</strong> ${message.content}</li>`); + } + + socket.on('previousMessages', function (messages) { + for (message of messages) { + renderMessage(message); + } + }); + + socket.on('receiveMessage', function (message) { + renderMessage(message); + }); + $('#chat').submit(function (event) { event.preventDefault(); var author = $('input[name=username]').val(); - var message = $('textarea[name=message]').val(); + var content = $('textarea[name=message]').val(); - if (author.length && message.length) { - var messageObj = { author, message } + if (author.length && content.length) { + var messageObj = { author, content } } + renderMessage(messageObj); + socket.emit('sendMessage', messageObj); }) </script> diff --git a/src/server.js b/src/server.js index 4ed658b..df07c3e 100644 --- a/src/server.js +++ b/src/server.js @@ -7,7 +7,7 @@ const app = express(); * Declare HTTP and Websocket protocols */ const server = require('http').createServer(app); -const socket = require('socket.io')(server); +const io = require('socket.io')(server); app.use(express.static(path.join(__dirname, '../public'))); @@ -22,6 +22,19 @@ app.use('/', (req, res) => { res.render('index.html') }); -app.listen(3000, () => +let messages = []; + +io.on('connection', socket => { + console.log(`Socket ${socket.id} connected`); + + socket.emit('previousMessages', messages); + + socket.on('sendMessage', data => { + messages.push(data); + socket.broadcast.emit('receiveMessage', data); + }) +}) + +server.listen(3000, () => console.log(`Server listen on port: 3000`) );