-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
73 lines (61 loc) · 2.32 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
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
var app = require('express')(),
server = require('http').createServer(app),
io = require('socket.io').listen(server),
ent = require('ent'), // Permet de bloquer les caractères HTML (sécurité équivalente à htmlentities en PHP)
fs = require('fs'),
mongoose = require('mongoose');
mongoose.connect('mongodb://mongo/test');
var db = mongoose.connection;
var Message;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console
.log("we're connected!");
// Définition du schéma de la table
var chatSchema = mongoose.Schema({
nickname: String,
message: String,
date: { type: Date, default: Date.now }
});
Message = mongoose.model('Message', chatSchema);
});
// Chargement de la page index.html
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
app.get('/style.css',function (req,res) {
res.sendfile(__dirname + '/style.css')
});
io.sockets.on('connection', function (socket, pseudo) {
// Dès qu'on nous donne un pseudo, on le stocke en variable de session et on informe les autres personnes
socket.on('nouveau_client', function(pseudo) {
pseudo = ent.encode(pseudo);
socket.pseudo = pseudo;
socket.broadcast.emit('nouveau_client', pseudo);
// On récupère tout les messages
Message.find(function (err, messages) {
if (err) return console.error(err);
for (var i in messages) {
val = messages[i];
socket.emit('message', {pseudo: val.nickname, message: val.message});
}
});
console.log(pseudo + ' a rejoint le chat!');
});
// Dès qu'on reçoit un message, on récupère le pseudo de son auteur et on le transmet aux autres personnes
socket.on('message', function (message) {
message = ent.encode(message);
socket.broadcast.emit('message', {pseudo: socket.pseudo, message: message});
// Création du message à sauvegarder
var first = new Message({
nickname: socket.pseudo,
message: message
});
// On sauvegarde le message
first.save(function (err, first) {
if (err) return console.error(err);
console.log(first.message);
});
});
});
server.listen(8080);