This repository was archived by the owner on Apr 3, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
110 lines (97 loc) · 3.2 KB
/
server.js
File metadata and controls
110 lines (97 loc) · 3.2 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
var app = require('http').createServer();
var io = require('socket.io')(app);
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'ipleiriadad@gmail.com',
pass: 'zsjojgjnbfpxwdmj'
}
});
var LoggedUsers = require('./loggedusers.js');
app.listen(8080, function(){
console.log('listening on *:8080');
});
// ------------------------
// Estrutura dados - server
// ------------------------
// loggedUsers = the list (map) of logged users.
// Each list element has the information about the user and the socket id
// Check loggedusers.js file
let loggedUsers = new LoggedUsers();
var sockets = [];
io.on('connection', function (socket) {
console.log('client has connected (socket ID = '+socket.id+ ')');
socket.on("sendSocketEmailToServer", (emailToSetToSocket)=>{
socket.email = emailToSetToSocket;
var socketRepetido = 0;
sockets.forEach((sockets) =>{
if(sockets.email == emailToSetToSocket){
socketRepetido = 1;
}
});
if(!socketRepetido){
sockets.push(socket);
console.log("Socket " + socket.email + " adicionado 'a lista => size = " + sockets.length);
}
socketRepetido = 0;
});
socket.on("userUpdated", (email)=>{
userEstaOnline = 0;
sockets.forEach(socket => {
if(email == socket.email){
userEstaOnline = 1;
socketID = socket.id;
}
});
if(userEstaOnline){
console.log("Foi encontrado o email: " + email);
io.to(`${socketID}`).emit("updateData"); //so' para quando o user esta a visualizar os seus movimentos
io.to(`${socketID}`).emit("notificationFromServer", "You have a new movement on your wallet!"); //sempre que o user estiver na aplicação
console.log("Mostrar notificação na aplicação");
}else{
var mailOptions = {
from: 'ipleiriadad@gmail.com',
to: email,
subject: 'Check out your wallet',
text: 'Check out you virtual wallet, you have a new movement!'
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
console.log("A enviar email para o user: " + email);
}
userEstaOnline = 0;
});
socket.on("disconnect", ()=>{
console.log("Antes:");
sockets.forEach(socket => {
console.log("ID: " + socket.id + " email: " + socket.email);
});
sockets.splice(sockets.indexOf(socket),1);
console.log("Depois:");
sockets.forEach(socket => {
console.log("ID: " + socket.id + " email: " + socket.email);
});
});
socket.on("logout", (socketID)=>{
console.log("Antes:");
sockets.forEach(socket => {
console.log("ID: " + socket.id + " email: " + socket.email);
});
sockets.forEach(socket => {
console.log("ID: " + socket.id + " email: " + socket.email);
if(socket.id == socketID){
sockets.splice(sockets.indexOf(socket),1);
}
});
console.log("Depois:");
sockets.forEach(socket => {
console.log("ID: " + socket.id + " email: " + socket.email);
});
});
});