-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
46 lines (33 loc) · 1.69 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const express = require('express'); //para fazer a tratamento para mostrar um arquivo estático, só para Rota
const path = require('path');
const app = express();
const server = require('http').createServer(app); //cria o protocolo http
const io = require('socket.io')(server); //define o protocolo WSS para o WebSocket, mandando o server
app.use(express.static(path.join(__dirname, 'public'))); //define uma pasta onde fica os arquivos públicos da aplicação
app.set('views', path.join(__dirname, 'public')); //para indicar que estamos utilizando as Views como html
app.engine('html', require('ejs').renderFile); //para quando precisamoa utilizar o html
app.set('view engine', 'html');
app.use('/', (req, res) => { //quando acessar o endereço do servidor padrão, renderiza a view index.html
res.render('index.html');
});
const users = {}
let messages = [];
io.on('connection', socket => { //define a forma de conexão com o WebSocket
//console.log(`Socket conectado ${socket.id}`);
socket.on('newUser', name => {
console.log('newuser: ' + name);
users[socket.id] = name
socket.broadcast.emit('userConnected', name);
});
//socket.emit('previousMessages', messages); //emite o evento com as mensagens
socket.on('sendMessage', data => { //ao receber a mensagem
messages.push(data);
socket.broadcast.emit('receivedMessage', data); //envia a mensagem para todos conectados
console.log(data); //imprime o objeto recebido
});
socket.on('disconnect', () => {
socket.broadcast.emit('userDisconnected', users[socket.id])
delete users[socket.id]
});
});
server.listen(process.env.PORT || 3000); //ouve a porta 3000