Skip to content

Instantly share code, notes, and snippets.

@Menencia
Created January 20, 2013 00:02
Show Gist options
  • Save Menencia/4575902 to your computer and use it in GitHub Desktop.
Save Menencia/4575902 to your computer and use it in GitHub Desktop.
// Generated by CoffeeScript 1.3.3
/*
SERVER
*/
var app, cookie, db, express, fs, io, port, server;
port = 3000;
fs = require('fs');
express = require('express');
cookie = require('express/node_modules/cookie');
app = express();
server = require('http').createServer(app);
io = require('socket.io').listen(server);
app.locals.port = port;
app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
return app.use(express["static"](__dirname + '/public'));
});
app.get('/', function(req, res) {
return res.render('index');
});
server.listen(port);
/*
DATABASE
*/
db = require('mongojs').connect('ff-tcgo', ['users']);
io.sockets.authorization(function(handshakeData, accept) {
var cookies, login, password;
if (handshakeData.headers.cookie) {
cookies = cookie.parse(handshakeData.headers.cookie);
login = cookies.login;
password = cookies.password;
db.users.findOne({
login: new RegExp('^' + login + '$', 'i'),
password: password
}, function(err, user) {
if (user !== null) {
return handshakeData.user = user;
}
});
}
return accept(null, true);
});
io.sockets.on('connection', function(client) {
return client.on('join', function(logins) {
db.users.findOne({
login: new RegExp('^' + logins.login + '$', 'i')
}, function(err, user) {
if (!err && user) {
if (logins.password === '' && !user.registered) {
return client.set('user', user, function() {
return client.emit('user', user);
});
} else if (user.password === logins.password) {
return client.set('user', user, function() {
return client.emit('user', user);
});
} else {
return client.emit('error', 'wrong password');
}
} else {
return client.emit('confirm registration');
}
});
return client.on('confirm', function(logins) {
return db.users.findOne({
login: new RegExp('^' + logins.login + '$', 'i')
}, function(err, user) {
if (!err && user) {
return client.emit('error', 'Pseudo déjà pris !');
} else {
user = {
login: logins.login,
password: logins.password
};
db.save(user);
return client.set('user', user, function() {
return client.emit('user', user);
});
}
});
});
});
});
/*io.of('/hall').on 'connection', (client) ->
console.log '+1'
nb_players++
# update clients
io.sockets.emit 'nb_players', nb_players
client.on 'disconnect', ->
# old player
console.log '-1'
nb_players--
# update clients
io.sockets.emit 'nb_players', nb_players
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment