Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var parseurl = require('parseurl');
- var session = require('express-session')({
- secret: 'pathtoencodesessionwithawesomesecret',
- resave: false,
- saveUninitialized: true
- });
- var bodyParser = require('body-parser');
- var mysql = require('mysql');
- var crypto = require('crypto');
- var ent = require('ent');
- var urlencodedParser = bodyParser.urlencoded({ extended: false });
- var sharedsession = require('express-socket.io-session');
- var app = express();
- var server = require('http').createServer(app);
- var io = require('socket.io').listen(server);
- io.use(sharedsession(session));
- io.of('/namespace').use(sharedsession(session, {
- autoSave: true
- }));
- var connected = [];
- var connections = {}
- var writting = [];
- var connection = mysql.createConnection({
- host : 'localhost',
- user : 'root',
- password : 'emilie160612',
- database : 'Member'
- });
- connection.connect();
- app.use(session)
- .use(function (req, res, next) {
- var pathname = parseurl(req).pathname;
- next()
- })
- .get('/', function (req, res) {
- var index = connected.indexOf(undefined);
- while (index != -1) {
- connected.splice(index, 1);
- index = connected.indexOf(undefined);
- }
- if (req.session.identifier) {
- res.sendFile(__dirname + '/index.html');
- } else {
- if (res.cookies && res.cookies.account) {
- connection.query('SELECT Identifier, Username FROM User WHERE Identifier = ' + res.cookies.account, function(err, rows, fields) {
- if (!err) {
- if (rows.length > 0) {
- req.session.username = rows[0]['Username'];
- req.session.identifier = rows[0]['Identifier'];
- res.redirect('/');
- }
- }
- });
- }
- res.redirect('/connection');
- }
- })
- .get('/css/style.css', function (req, res) {
- res.sendFile(__dirname + '/css/style.css');
- })
- .get('/css/connection.css', function (req, res) {
- res.sendFile(__dirname + '/css/connection.css');
- })
- .get('/main.js', function (req, res) {
- res.sendFile(__dirname + '/main.js');
- })
- .get('/jquery.js', function (req, res) {
- res.sendFile(__dirname + '/jquery.js');
- })
- .get('/connection', function (req, res, next) {
- res.sendFile(__dirname + '/connection.html');
- })
- .post('/connection', urlencodedParser, function(req, res, next) {
- var password = crypto.createHash('md5').update(req.body.password).digest('hex');
- connection.query('SELECT Identifier, Username FROM User WHERE Username = "' + req.body.username + '" AND Password = "' + password + '"', function(err, rows, fields) {
- if (!err) {
- if (rows.length > 0) {
- req.session.username = rows[0]['Username'];
- req.session.identifier = rows[0]['Identifier'];
- if (req.body.remember) {
- res.cookie('account', req.session.identifier, { maxAge: 1000 * 3600 * 24 * 365 });
- }
- res.redirect('/');
- }
- }
- });
- // Envoyer message : Pseudo ou mot de passe invalide
- })
- .get('/register', function (req, res) {
- res.sendFile(__dirname + '/register.html');
- })
- .post('/register', urlencodedParser, function(req, res) {
- var found = false;
- connection.query('SELECT Identifier, Username FROM User WHERE Username = "' + req.body.username + '"', function(err, rows, fields) {
- if (!err) {
- if (rows.length > 0) {
- found = true;
- }
- }
- });
- if (!found) {
- var password = crypto.createHash('md5').update(req.body.password).digest('hex');
- connection.query('INSERT INTO User (Username, Password) VALUES ("' + req.body.username + '", "' + password + '")');
- res.redirect('/connection');
- } else {
- // Envoyer message : Compte existe déjÃ
- }
- })
- .get('/logout', function (req, res, next) {
- req.session = null;
- res.redirect('/connection');
- });
- io.sockets.on('connection', function (socket) {
- var sessionID = socket.handshake.sessionID;
- if (connected.indexOf(socket.handshake.session.username) == -1) {
- connected.push(socket.handshake.session.username)
- }
- if ('undefined' == typeof connections[sessionID]) {
- // Première connexion
- connections[sessionID] = { 'length': 0 };
- socket.broadcast.emit('newUser', {username: socket.handshake.session.username, connectedList : connected});
- }
- connections[sessionID][socket.id] = socket;
- connections[sessionID].length ++;
- socket.emit('connected', {username: socket.handshake.session.username, connectedList : connected});
- socket.emit('writting', {writting: writting});
- socket.on('message', function (message) {
- message = ent.encode(message);
- socket.broadcast.emit('message', {username: socket.handshake.session.username, message: message, me: false});
- socket.emit('message', {username: socket.handshake.session.username, message: message, me: true});
- console.log('===============================================')
- console.log('connectedList : '+connected);
- console.log('sessionID : '+sessionID);
- console.log('socket.id : '+socket.id);
- console.log('connections :');
- console.log(connections);
- console.log('')
- });
- socket.on('writting', function (state) {
- var send = false;
- if (state) {
- if (writting.indexOf(socket.handshake.session.username) == -1) {
- writting.push(socket.handshake.session.username);
- send = true;
- }
- } else {
- var index = writting.indexOf(socket.handshake.session.username);
- if (index >= 0) {
- writting.splice(index, 1);
- send = true;
- }
- }
- if (send) {
- socket.broadcast.emit('writting', {writting: writting});
- socket.emit('writting', {writting: writting});
- }
- });
- socket.on('disconnect', function () {
- var userConnections = connections[sessionID];
- if (connections[sessionID].length && connections[sessionID][socket.id]) {
- connections[sessionID].length --;
- delete connections[sessionID][socket.id];
- }
- if (connections[sessionID].length == 0) {
- var index = connected.indexOf(socket.handshake.session.username);
- if (index >= 0) {
- connected.splice(index, 1);
- }
- index = writting.indexOf(socket.handshake.session.username);
- if (index >= 0) {
- writting.splice(index, 1);
- send = true;
- }
- socket.broadcast.emit('logout', {username: socket.handshake.session.username, connectedList : connected});
- console.log('Déconnecté : ' + sessionID + ' (' + socket.handshake.session.username + ')');
- }
- });
- });
- server.listen(9000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement